PHP:スクリプト実行時のタイムアウト時間を変更「max_execution_time」

PHPで大量のデータを処理する時にタイムアウト強制終了)してしまうことがあります。

タイムアウトする時間を設定する場合は、php.inimax_execution_timeの値を変更します。

システムの処理内容によっては、重い処理を行わなければいけないことがあります。
その場合は、max_execution_timeを調整しタイムアウト時間を変更すればエラーを回避することができます。

下記にphp.inimax_execution_timeの値を変更し、スクリプトタイムアウト時間実行時間)を変更した時の方法をメモします。


php.iniのタイムアウト時間を変更

SSHでサーバにログインします。

ログイン後、php.iniを編集します。

vi /etc/php.ini

max_execution_timeの値は秒単位で指定します。

max_execution_time = 30

↓変更

max_execution_time = 120

Apacheを再起動すれば反映されます。

/etc/init.d/httpd restart

■ タイムアウトの時間を無制限にする場合

タイムアウトの制限をかけずに無制限に設定する場合は
max_execution_timeの値を「0」に設定します。

max_execution_time = 0

上記の方法でスクリプトのタイムアウトする時間を調整することができます。

しかし、max_execution_timeはサーバの負荷を防止する為にあるので、
無制限に設定したり、大き過ぎる値を設定するなどは避けた方がいいと思います。

プログラムでバグがあった場合、長時間処理を実行して強制終了せずに
スクリプトが動いてしまうという可能性があるからです。

PHP:php.iniのメモリ「memory_limit」の値を変更

PHPで開発している時にメモリmemory_limit)の上限を変更したい場合があります。

memory_limitの値が低い場合、処理内容によっては「Fatal error」になってしまうことがあります。
その場合、php.iniで設定しているmemory_limitの値を大きくすればエラーを回避することが可能です。

下記にphp.inimemory_limitの値を変更し、メモリの上限を増加させた時の方法をメモします。


php.iniのメモリ上限を変更

SSHでサーバにログインします。

ログイン後、php.iniを編集します。

vi /etc/php.ini

「memory_limit」で検索すると値が設定されています。
設定されている値を変更し、保存します。

memory_limit = 128M

↓メモリ上限を変更

;memory_limit = 128M
memory_limit = 256M

Apacheを再起動すれば反映されます。

/etc/init.d/httpd restart

メモリの上限を無制限にする場合

メモリの制限をかけずに無制限に設定する場合は
memory_limitの値を「-1」に設定します。

memory_limit = -1

Linux:php.iniの設定を変更し、反映させる

phpでシステムを構築している際に、php.iniの設定内容を変更したい場合があります。

Linuxサーバに設置しているphp.iniファイルを変更し、
Apacheを再起動させれば変更した内容で反映させることができます。


php.iniファイルの場所を確認

php.iniファイルがどこにあるかわからない場合は、
phpinfo()を実行するとphp.iniファイルの場所を確認できます。

phpファイルに下記の内容を記述し、サーバにアップロードします。
アップしたファイルにアクセスすればphpinfoの内容が出力されます。

<?php phpinfo(); ?>

「Loaded Configuration File」にphp.iniファイルへの場所が出力されます。

php_ini_check


php.iniファイルの変更・反映

SSHでサーバにログインし、php.iniファイルを編集します。

編集する場合はバックアップを作成した方がいいと思います。
cpコマンドでバックアップを作成します。

cp /etc/php.ini /etc/php.ini.org

php.iniを編集する場合は下記コマンドを実行します。

vi /etc/php.ini

php.iniの内容が表示されるので、変更したい内容でファイルを編集します。
変更が完了したら、php.iniを保存し閉じます。

編集しただけだと反映されないので、Apacheを再起動します。

/etc/init.d/httpd restart

または、下記コマンドを実行します。

service httpd restart

再起動が完了すれば、変更した内容でphp.iniを反映することができます。
再起動後は、phpinfo()で変更内容を確認し、書き換わっていればOKです。


サーバ全体の変更を行ないたい場合はphp.iniファイルを書き換えるといいと思います。