PHPのmax_execution_timeは、スクリプトがパーサにより強制終了されるまでに許容される最大の時間を秒単位で指定する設定です。
この設定は、無限ループするようないい加減に書かれたスクリプトから、サーバーの負荷を上げることを防止するのに役立ちます。
今回は、php.ini
を直接書き換えることなくmax_execution_timeの設定を変更する方法を3つご紹介します!
max_execution_timeを変更する理由
基本的に、max_execution_timeの値はデフォルトで事足りると思いますが、例えば、動画編集や大量のデータベース操作など、スクリプトが長時間の処理を行う必要がある場合や、APIやファイル読み込みなど、スクリプトが外部ソースからデータを取得する際にタイムアウトエラーが発生する場合など、重たい処理をする場合にmax_execution_timeの値を変更することがあります。
また、スクリプトがブラウザから実行する際に、処理完了まで待たずにバックグラウンドで実行したい場合なども変更することがあります。
max_execution_timeの変更例
著者の場合、自宅サーバーに構築したNextCloudで、大きなサイズのファイルを大量にやり取りすることを想定して、max_execution_timeの設定を変更しました!
ただ、冒頭でも書いたように、サーバーを負荷から守る意味でも、本当に変更が必要かどうかをよく考えてから設定を変更することが重要です。
max_execution_timeを変更する3つの方法
結論から言うと、php.ini
を書き換えずにmax_execution_timeを変更する方法は以下の3つです。
- 実行するPHPファイル内で
ini_set
関数を使う方法 - サーバー設定ファイル
.htaccess
内でphp_value
ディレクティブを使う方法 - レンタルサーバーの設定画面からPHP(
php.ini
)の設定を行う方法
それぞれ適用範囲や影響力が異なりますので、目的に応じて選択してください。
PHPファイル内でini_set関数を使う
max_execution_timeのデフォルト値は30秒です。
例えば、実行するPHPファイルに次のように記述すれば、max_execution_timeを60秒に変更できます。
<?php ini_set('max_execution_time', 60); ?>
また、無制限にする場合は0を指定します。
ただし、無制限にした場合はブラウザから処理を中断しないように注意してください。
.htaccess内でphp_valueを使う
.htaccess
で設定する方法は、サーバー設定ファイル「.htaccess」に次のように記述することです。
php_value max_execution_time ここに秒数
例えば、max_execution_timeを600秒(10分)に変更する場合は、次のように記述します。
php_value max_execution_time 600
この場合、この設定ファイルがあるディレクトリ以下すべてのPHP実行時間が600秒に変更されます。
レンタルサーバーの管理画面から変更する
レンタルサーバーでPHPのmax_execution_timeの設定を変更する方法は、利用しているレンタルサーバーによって設定方法が異なります。
今回は例として、よく利用されている人気のエックスサーバーとコノハについてご紹介します。
Xserver(エックスサーバー)の場合
エックスサーバーでは、php.ini設定でmax_execution_timeの値を変更することができます。
その手順は以下の通りです。
- エックスサーバーのサーバーパネルにログインします。
- PHP欄にある【php.ini設定】をクリックします。
- エラーが発生しているドメインの【選択】をクリックします。
- 【php.ini設定変更】をクリックします。
- 画面を下にスクロールさせると、【その他の設定】欄に【max_execution_time】があります。
その値を60秒以上に変更します。 - 【設定する(確認)】をクリックし、【設定する(確定)】をクリックします。
Conoha Wing(コノハ)の場合
Conoha Wingでは、コントロールパネル上でphp.iniを編集することができます。
その手順は以下の通りです。
- コントロールパネルへログインします。
- 上部メニューの「WING」をクリックします。
- 左メニューの「サイト管理」をクリックします。
- サイト管理画面の左メニューで「サイト設定」を開きます。
- 上のタブから「応用設定」を開きます。
- 「PHP設定」を開きます。
- 「php.ini編集」の右側の鉛筆アイコンの「編集」をクリックします。
- 入力欄に次のように記述します。
max_execution_time = ここに秒数
例えば、max_execution_timeを120秒に変更する場合は、次のように記述します。max_execution_time = 120
- 「保存」をクリックします。
まとめ
どこで変えても同じ結果なのですが、PHPファイルにini_set
関数で設定する方法は、記載したスクリプトファイルのみに適用されます。
レンタルサーバーをご利用なら管理画面から変更、でなければphp.ini
か.htaccess
で変更、都度適用したいなら直接PHPファイルで変更って感じでしょうか。
ただ、全部に設定しても、どの設定を採用するか優先順位がありますので、変更する際は注意しが必要です。
設定の優先順位について
設定の優先順位は次のようになります。
- PHPファイル
-
そのファイルのみに適用される
- .htaccess
-
そのディレクトリ以下に適用される
- php.ini
-
PHP全体に適用される
つまり、PHPファイル > .htaccess > php.ini の順に優先されます。
ただし、セーフモードで動いている場合は、これらの設定は無効になります。
以上です。お疲れ様でした!
- Original:https://minory.org/php-max_execution_time.html
- Source:Minory
- Author:管理者