[PHP] max_execution_time : スクリプトの最大実行時間を指定する

PHP の設定項目 max_execution_time は、PHP スクリプトの最大実行時間を指定する項目です。プログラムの実行時間が、何らかの理由によってここで指定された時間を超えた場合は、プログラムの実行が中断され、「Fatal error: Maximum execution time of 30 seconds exceeded in …」というエラーとなります。

    以下、php.ini 内のコメントの日本語訳です:

    各スクリプトの最大実行時間(秒)
    注: この設定は、CLI SAPI では 0 にハードコードされています。

    公式マニュアルページ(日本語): PHP: 実行時設定 – Manual

    明示的には書かれていませんが、0 を指定すると「タイムアウトしない」という指定になるようです。
    公式マニュアルページの方が詳しい説明がありますね。 以下、公式マニュアルページからの引用です。

    スクリプトがパーサにより強制終了されるまでに許容される最大の 時間を秒単位で指定します。この命令は、いい加減に書かれた スクリプトがサーバーの負荷を上げることを防止するのに役立ちます。 デフォルトでは、30 に設定されています。 PHP を コマンドライン から実行する場合のデフォルト設定は 0 です。

    最大実行時間は、システムコール、ストリーム操作等の 影響を受けません。より詳細な情報については、 set_time_limit() 関数の説明を参照ください。

    max_execution_time は、php.ini, .htaccess/httpd.conf, ini_set(), .user.ini(PHP5.3以降の場合)のいずれの方法でも設定できるようですが、公式マニュアルページによると、PHP がセーフモードで実行されている時には制限があるようです:

    セーフモードで実行している場合にはこの設定を ini_set() で変更することはできません。次善策としては セーフモード をオフにするか あるいは php.ini 上で制限時間を変えるしかありません。

    また、Web サーバ自体に設定されているタイムアウト時間にも影響されるようです:

    Web サーバー側でもタイムアウトの設定項目を持ち、 その設定で PHP の実行が中断されることもあります。 Apache には Timeout ディレクティブ、IIS には CGI タイムアウト関数があり、どちらもデフォルトで 300 秒に設定されています。 これらの意味については、Web サーバーのドキュメントを参照ください。


    Pocket
    Bookmark this on Yahoo Bookmark

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>