Maximum execution time of 30 seconds exceeded Error
PHP(Laravel含む)で時間が掛かる処理を行うと「Maximum execution time of 30 seconds exceeded」エラーが発生することがあります。
大量データを処理したり、ループ回数が多かったり、無駄な処理が動いていたり。発生要因は様々ですが、処理を見直すか、設定を見直すかのどちらかになります。
「30 seconds」は「30秒」ですが、php.iniの「max_execution_time」で指定されている「30秒」を超えているよ、というメッセージになります。
これを回避するために「php.ini」を編集します。
php.iniの場所を調べる
サーバーにsshなどで接続し、サーバーコンソールで「php –ini」を実行するとphp.iniの場所(3行目)がわかります。
php --ini
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed: /etc/php.d/10-opcache.ini,
/etc/php.d/20-bz2.ini,
/etc/php.d/20-calendar.ini,
/etc/php.d/20-ctype.ini,
php.iniを編集する
「max_execution_time」のデフォルトは30秒になっていたので、300秒に変更します。この秒数は作成しているプログラムが必要と思われる時間を指定してください。
; Maximum execution time of each script, in seconds
; https://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
; max_execution_time = 30
max_execution_time = 300
設定の反映
nginxを使用している場合、PHP-FPMで(FastCGI)で稼働させていると思いますので、先ほどphp.iniに設定した内容を反映させるためにPHP-FPMを再起動します。
systemctl restart php-fpm
コメント