sleep()は実行時間に含まれません

こんにちは、さるまりんです。

PHPの実行時間についてです。

// 最大実行時間を30秒に設定
ini_set('max_execution_time', 30);
// 時間を表示
echo date('H:i:s') . "\n";
// 40秒スリープします
sleep(40);
// 時間を表示
echo date('H:i:s') . "\n";

上のプログラムを実行すると次のような表示がされました。

05:31:00
05:31:40

最大実行時間を30秒にしたので、05:31:30で終わるかと思ったら、40秒まで待ってプログラムが終了しました。

あれ?

sleep()は実行時間に含まれません

sleep()のマニュアルのコメントを見ると

The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), the sleep() function, database queries, etc. is not included when determining the maximum time that the script has been running.

とあり、sleep()はスクリプトの実行時間にカウントされず、max_execution_timeで設定された最大実行時間に含まれないようです。

読んでくださってありがとうございます。

それではまた!