PHPのsleep()関数:初心者向けガイド

JavaScriptを有効にしてください

前書き

PHPプログラミングにおいて、sleep()関数はスクリプトの実行を一時的に停止するのに使われます。
この記事では、sleep()の基本的な使い方といくつかの一般的な使用例を紹介します。

sleep()関数の基本

PHPのsleep()関数は、指定された秒数だけスクリプトの実行を停止します。
この関数は、スクリプトの一時的な遅延が必要な場合に使用されます。
基本的な構文は以下の通りです:

PHP
1
sleep(秒数);

例:スクリプトの実行を遅延させる

単純な遅延

PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php
// 開始時間を取得
$start_time = microtime(true);

echo "処理を開始します。\n";

// 3秒間待機
sleep(3);

// 終了時間を取得
$end_time = microtime(true);

echo "処理を再開します。\n";

// 経過時間を計算
$elapsed_time = $end_time - $start_time;

echo "経過時間: " . $elapsed_time . "秒\n";
実行結果
1
2
3
処理を開始します。
処理を再開します。
経過時間: 3.0009999275208秒

このコードは、最初のメッセージを表示した後、3秒間待機してから次のメッセージを表示します。

sleep()の適切な使用

sleep()は、サーバーの過負荷を防ぐための一時的な遅延、レート制限のためのAPIコールの遅延、またはデモ目的でのプロセスの可視化などに使用されます。

例:ループ内での使用

PHP
1
2
3
4
5
<?php
for ($i = 0; $i < 5; $i++) {
    echo "処理 $i<br>";
    sleep(1); // 1秒ごとにループ
}
実行結果
1
処理 0<br>処理 1<br>処理 2<br>処理 3<br>処理 4<br>

このコードは、ループの各反復の間に1秒の遅延を設けます。

例:500ミリ秒(0.5秒)待機する場合

sleep()関数は秒単位ですが、もっと細かい単位で処理を止めたい場合はusleep() 関数を使用することで、マイクロ秒単位(1秒 = 1,000,000マイクロ秒)の待機が可能です。
ミリ秒で待機したい場合は、ミリ秒の値に 1000 を掛けてマイクロ秒に変換すれば実現できます。

php
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php
// 開始時間を取得
$start_time = microtime(true);

echo "処理を開始します。\n";

// 500ミリ秒待機(500 * 1000 マイクロ秒)
usleep(500 * 1000);

// 終了時間を取得
$end_time = microtime(true);

echo "処理を再開します。\n";

// 経過時間を計算
$elapsed_time = $end_time - $start_time;

echo "経過時間: " . $elapsed_time . "秒\n";
実行結果
1
2
3
処理を開始します。
処理を再開します。
経過時間: 0.50099992752075秒

例:500ミリ秒(0.5秒)を time_nanosleep() で実現する場合

また、より細かい単位(ナノ秒単位)の待機が必要な場合は、time_nanosleep() 関数も利用できます。こちらは秒とナノ秒を指定して待機することができます。

php
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php
// 開始時間を取得
$start_time = microtime(true);

echo "処理を開始します。\n";

// 0秒と500,000,000ナノ秒(500ミリ秒)待機
time_nanosleep(0, 500000000);

// 終了時間を取得
$end_time = microtime(true);

echo "処理を再開します。\n";

// 経過時間を計算
$elapsed_time = $end_time - $start_time;

echo "経過時間: " . $elapsed_time . "秒\n";
実行結果
1
2
3
処理を開始します。
処理を再開します。
経過時間: 0.5秒

これらの方法で、PHPにおいてミリ秒単位の待機処理を実現できます。

sleep()の注意点

sleep()を使用する際は、スクリプトの過度な遅延を避けるため、遅延時間を適切に設定することが重要です。
また、ユーザーの体験を損なうことのないように、フロントエンドではなくバックエンドプロセスで主に使用します。

まとめ

PHPのsleep()関数は、スクリプトの実行を一時的に遅延させる簡単な方法を提供します。
この記事で紹介した基本的な使い方と例を参考にして、スクリプトの実行に柔軟性を加えましょう。


スポンサーリンク

共有

もふもふ
著者
もふもふ
プログラマ。汎用系→ゲームエンジニア→Webエンジニア→QAエンジニア