PHP で最大実行時間をセットしたり確認したりする方法

PHP でタイムアウトまでの時間をセットしたり確認したり方法についてです。

まずはセットの方から。 セットする方については 2 通りの方法があります。 ひとつめは専用の set_time_limit() を使う方法、もうひとつは汎用の ini_set() を使う方法です。

// 1 つめ
// タイムアウトまでの時間を設定する
// この場合は 600 秒
set_time_limit(600);

// 2 つめ
// タイムアウトまでの時間を設定する
// この場合は 300 秒
ini_set('max_execution_time', 300);

いずれも数字の単位は「秒」になります。

ちょっと注意が必要な点として、この関数は「タイムアウトまでのトータル実行時間」を変更するわけではなく、「関数の呼び出し時から何秒後にタイムアウトさせるか」をセットするという点があります。 ですので、たとえば、 PHP の実行開始時点から 30 秒経ったところで set_time_limit(10) が呼び出されると、すぐさまタイムアウトするのではなく、そのタイミングからさらに 10 秒後(つまりトータルで 40 秒経過した後)にタイムアウトする形になります。

もう一方の確認する方法についてです。 こちらはセットする方とはちがい ini_get() の一択です。 set_time_limit() と対になる get_time_limit() という関数がありそうに思えますがありません。

  // 設定されたタイムアウト時間を確認する
  $ttl = ini_get('max_execution_time');  // => 60 など

以上です。