PHP+Nginxで「Maximum execution time of 30 seconds exceeded」エラー

PHP

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

札幌在住エンジニア。JavaやPHPやWordPressを中心とした記事が中心です。

【SE歴】四半世紀以上
【Backend】php / java(spring) / c# / AdobeFlex / c++ / VB / cobol
【Frontend】 vue.js / jquery他 / javascript / html / css
【DB】oracle / mysql / mariadb / sqlite
【infrastructure】aws / oracle / gcp
【license】aws(saa-c03) / oracle master / XML Master / Sun Certified Programmer for the Java 2 Platform 1.4

Nobelをフォローする
PHP
Nobelをフォローする

コメント

タイトルとURLをコピーしました