PHP プロンプトの最大実行時間 30 秒を超えました... エラーの解決策

WBOY
リリース: 2016-06-20 13:05:03
オリジナル
1994 人が閲覧しました

今日、スクレイピング プログラムを実行していると、PHP が長時間空白になり、次のエラー メッセージが表示されました:

致命的なエラー: ..... で最大実行時間 30 秒を超えました。

これは非常に簡単で、スクリプトの実行時間が上限の 30 秒を超えていることを意味します。このエラーは過去によく発生しており、通常はページのヘッダーに直接 set_time_limit(0) を追加することで対処していました。今日はこのエラーの対処方法をまとめます。関連情報を参照した後、このエラーに対処するには基本的に 3 つの方法があります。

(1) php 構成ファイル php.ini ファイルを変更して php.ini ファイルを見つけ、このファイル内で次の行を見つけます:

max_execution_time = 30 ;
ログイン後にコピー

行数値 30 を秒単位で希望の値に設定します。 (次のように直接変更することもできます: max_execution_time=0; // 制限なし) この変更を行った後はサーバーを再起動する必要があることに注意してください。

(2) ini_set() 関数を使用する php.ini を変更できない友人のために、ini_set() 関数を使用して最大実行時間制限値を変更し、その値をファイルの先頭に追加できます。次のコード:

ini_set('max_execution_time','100');
ログイン後にコピー

上記の設定は 100 秒ですが、0 に設定することもでき、その場合、実行時間は制限されません。

(3) set_time_limit() 関数を使用してプログラムの先頭に追加します。

set_time_limit(100);
ログイン後にコピー

は、最大実行時間が 100 秒に設定されていることを意味します。もちろん、上記と同じ意味でパラメータ Set を 0 に設定することもできます。 set_time_limit 関数の特別な説明: void set_time_limit (int $秒) この関数の機能は、スクリプトの実行に許可される時間を秒単位で設定することです。この設定を超えると、スクリプトは致命的なエラーを返します。デフォルト値は 30 秒、または php.ini の max_execution_time で定義された値 (この値が存在する場合) です。この関数が呼び出されると、set_time_limit() はタイムアウト カウンタを 0 から再スタートします。つまり、デフォルトのタイムアウトが 30 秒で、スクリプトが 25 秒間実行されているときに set_time_limit(20) が呼び出された場合、タイムアウトになるまでにスクリプトを実行できる合計時間は 45 秒になります。この機能は、php がセーフ モードで実行されている場合は有効になりません。セーフモードをオフにする(php.iniでsafe_modeをoffに設定する)か、php.iniで時間制限を変更する以外に方法はありません。

ケース: セーフ モードがオンになっていない場合は、プログラムの実行時間を 25 秒に設定します。例:

<p><?php</p>if(!ini_get('safe_mode')){<br />	set_time_limit(25);<br />}
ログイン後にコピー


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート