概要
set_time_limit()
が思ったより使いやすかったので簡単にまとめる。
注意
多様は禁物!
「ちょっとデバッグするときに一時的に使う」くらいの感覚で使ったほうが良さそう。
でないと「php.iniのmax_execution_timeをいくらいじっても特定の処理だけタイムアウトが長くなる」みたいな事になりバグを生みそう。
どんな関数?
実行処理時間をphp.iniをいじらずとも変更できる。
PHPは実行可能な秒数がphp.iniというファイル内部のmax_execution_timeで設定できる。
set_time_limit()
を指定処理内部に記載することでphp.iniでの実行可能な秒数をいじることができる。
詳細
下記のように指定する。
set_time_limit(秒数の指定)
レスポンスはboolらしい。
引数に0を指定すると制限がなくなって永遠と実行される。
逆に引数を一切指定しないと30秒がデフォルトで設定される。ただしphp.iniでmax_execution_timeを使っている場合はその値がデフォルト値として設定される。
一連の処理の中でset_time_limit()
が実行されたタイミングで制限時間のカウンターがset_time_limit()
で指定した値でリセットされる。
なので一連の処理の中でset_time_limit(15)
があるステップまで30秒かかって実行されたとする。set_time_limit(15)
が実行されたタイミングでカウンターがリセットされ更にそこから15秒リミットが伸びる。
タイムリミットは45秒となる。
↑のような仕様を気にしたくないなら、一連の処理の序盤にset_time_limit()
を定義することで実質その一連の処理のタイムリミットをset_time_limit()
の引数で指定した秒数にすることができる。
参考文献