0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

miriwoお一人様Advent Calendar 2024

Day 7

PHP set_time_limit()を始めてつかってみた

Posted at

概要

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()の引数で指定した秒数にすることができる。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?