ファックファック!!
PHPには「php.ini」という設定ファイルがあり、ファイル内で色々な設定が行われています。
例えば、メモリの上限であったり、タイムアウトの上限であったり。
PHPで重い処理を行っている場合にタイムアウトが発生することがあるのですが、今回はそんな場合の対処法を解説します。
この記事を書いた人
(泉浩兵)
当ブログ管理者
・エンジニア
・新プログラミング言語『Zero』開発
・保有資格約20個
・投資好き(日本株・仮想通貨)
・オンラインカジノ好き(ルーレット)
・47都道府県制覇目指し中
⇒Twitter(@izumin_0401)
⇒Instagram(@izumin0401)
PHPのタイムアウトエラー
PHP内で重い処理を行っている場合に、「Maximum execution time…」というエラーが発生する場合があります。
これは、処理できる上限時間を超えた場合に発生します。
「Maximum execution time…」エラー内容
1 2 3 4 5 |
[2019-10-09 18:41:02] local.ERROR: Maximum execution time of 999 seconds exceeded {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Maximum execution time of 999 seconds exceeded at C:\\xampp\\laravel\ eservation-back\\vendor\\laravel\\framework\\src\\Illuminate\\Support\\Arr.php:217) [stacktrace] #0 {main} "} |
「Maximum execution time…」対処法
タイムアウトの上限を変更することで対応します。
対処法は以下の2つです。
- php.iniの「max_execution_time」を変更する
- ini_set関数を使用し、「max_execution_time」を変更する
1.php.iniの「max_execution_time」を変更する
php.iniファイルを開き、「max_execution_time」の設定値が「999」等になっているので変更します。
上限なしにしたい場合は「-1」にします。
php.iniは設定ファイルなので、設定を変更することですべての処理に影響が出ます。
上限を上げるので問題はないですが、影響範囲は少なければ少ない方がよいでしょう。
2.ini_set関数を使用し、「max_execution_time」を変更する
PHPには非常に便利な「ini_set関数」があります。
ini_set関数は、特定の処理だけphp.iniの設定を変更することができます。
つまり、直接php.iniを修正する必要がないので影響範囲を最小限に留めることができます。
処理開始時に以下のように記載すればOK。
1 |
ini_set('max_execution_time', '-1'); |
max_execution_timeの注意点
そもそも「max_execution_time」の値を変えなくてはならない状況が正しいかどうかを再考しましょう。
「max_execution_time」は、処理に時間がかかりすぎたことによって強制終了しています。
まずは、上限を本当に上げなくてはならないのかを考えてみましょう。
おすすめ書籍
僕はLaravelの勉強をするのに以下の書籍を購入しました。おすすめですよ!
まとめ
処理に時間のかかる処理であるバッチ処理などは注意が必要です。
大概メモリで死ぬか、タイムアウトで死にます。
上限を変更すること自体は簡単ですが、そもそもそれが正しいのか、無駄なことをしていないのかを考えることが一番大切です。
ではでは。