PHPで処理を一時停止してくれるsleep関数について書いています。
sleep関数についての公式のドキュメントはこちらです。
sleep関数の使い方
PHPでsleep関数を使うと、関数を呼び出したときに処理を一時的に止めてくれます。
例えば、下記のように使うことができます。
<?php
echo "hello,";
sleep(3);
echo "world!!\n";
最初に文字列の「hello,」を出力します。
その後にsleep関数を使っています、引数として渡しているのは止めたい秒数です。
3秒止まった後に、後に書いた処理が動きます。
3秒後に最後の処理で、「world!!」が出力されます。
動作を確認すると、下記のように遅れて出力されることが確認できます。
このように「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関数を使うことがあります。
こうすることで、ループ毎にスリープしてコンピュータの負荷を下げることができます。
コメント