PHPで処理を一時停止するsleep関数の使い方!

PHP

PHPで処理を一時停止してくれるsleep関数について書いています。
sleep関数についての公式のドキュメントはこちらです。

sleep関数の使い方

PHPでsleep関数を使うと、関数を呼び出したときに処理を一時的に止めてくれます。
例えば、下記のように使うことができます。

<?php
echo "hello,";
sleep(3);
echo "world!!\n";

最初に文字列の「hello,」を出力します。
その後にsleep関数を使っています、引数として渡しているのは止めたい秒数です。

3秒止まった後に、後に書いた処理が動きます。
3秒後に最後の処理で、「world!!」が出力されます。

動作を確認すると、下記のように遅れて出力されることが確認できます。
PHPのsleep関数の動作確認

このように「hello,」が出力された後、3秒待って後続の処理が行われました。

引数

引数には秒数を渡します。
与えられた秒数分プログラムの実行を遅らせてくれます。

sleep関数には整数値しか渡せません。
そのため0.5秒など、1秒以下のミリ秒を指定したい場合には、usleep関数を使うと良いです。

戻り値

成功したときには0が返ってきます。
中断した場合には、sleep関数はゼロ以外の値が返ってくるとのことです。

負数を指定するとエラー

引数に負数を指定すると、エラーになります。
例えば、下記のようにマイナスの値を指定したときです。

sleep(-3);

このときには、下記のようにValueErrorエラーになります。

Fatal error: Uncaught ValueError: sleep()

指定の秒数スリープしたか確認する

date関数をはさんで、時分秒を出力することで、本当に指定した秒数スリープしたか確認してみます。

<?php
echo "----- start -----\n";
echo date('H:i:s')."\n";
sleep(10);
echo date('H:i:s')."\n";
echo "----- end -----\n";

最初に開始したことがわかるようにメッセージを出力しています。
次の行でdate関数を使って、現在の時分秒を出力しました。

そしてsleep関数で10秒スリープします。
その後に、もう一度date関数で現在の時分秒を出力することで、指定した秒数たったか確認しています。

実際に動作を確認すると、下記のように指定秒数スリープしていることが確認できました。

----- start -----
05:25:50
05:26:00
----- end -----

sleep関数を使うのはどんなとき?

今回はPHPのsleep関数について紹介しました。

sleep関数は普段はあまり使うことがありません。
バッチ処理などで処理が長く続くようなものだと、ループ処理の中でsleep関数を使うことがあります。
こうすることで、ループ毎にスリープしてコンピュータの負荷を下げることができます。

コメント

タイトルとURLをコピーしました