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


397

オンラインソースからJSONファイルをダウンロードしていて、ループが実行されると、次のエラーが発生します。

致命的なエラー:24行目のC:\ wamp \ www \ temp \ fetch.phpで最大実行時間が30秒を超えました


11
最大実行時間の重複の可能性が60秒を超えました。これは既に他の3つの重複です。質問する前に検索機能を使用してください。
Gordon

「set_time_limit()関数と構成ディレクティブmax_execution_timeは、スクリプト自体の実行時間にのみ影響します。system()を使用したシステムコール、ストリーム操作、データベースクエリなど、スクリプトの実行外で発生するアクティビティに費やされる時間。 。スクリプトが実行される最大時間を決定する際に含まれていません。これは、PHPのマニュアルから、Windowsの「上真実ではありません。
ジェイコブ・サンチェス・

回答:


722

あなたのループは無限かもしれません。そうでない場合は、次のように最大実行時間を延長できます。

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

そして

set_time_limit(300);

時間制限を一時的に延長するために使用できます。


95
set_time_limit(300)を使用して、一時的に制限時間を延長できます。
Omn 2013

これはその1つのスクリプトに対してのみ設定されますか、それとも同じサーバーでこのスクリプトの後に実行される他のすべてのスクリプトに影響しますか?
Rao

1
@Raoはい、これはその1つのスクリプトのみに適用されます。すべてのスクリプトでそれを作成するには、php.iniファイルで変更する必要があります。set_time_limit(0)を実行することもできます。スクリプトを永久に、または長期間実行したい場合
Haseeb

31
ini_set( 'max_execution_time'、0); //制限なし
Junaid Atari

3
@sangam私は、一定量の追加のバッファーを許可しながら、この制限をできるだけ低く保つことがベストプラクティスだと思います。セキュリティ上の理由から、完全にオフにしたくありません。合理的に設定する必要があります。実際には、サーバーストレスレベルが中程度で、実行時間の最も長いスクリプトが完了するまでにかかる時間の2倍に設定しました。それでも、常に失敗する可能性があります。したがって、ベストプラクティスは、時間のかかるスクリプトのタイムアウトの問題を個別に処理することでもあります。
Hafenkranich 2016年

185

私は同じ問題を抱えていたとのparamの値を変更することで、それを解決するmax_execution_timeにはphp.ini、次のように、:

max_execution_time = 360      ; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
max_input_time = 120          ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M           ; Maximum amount of memory a script may consume (128MB by default)

これがお役に立てば幸いです。


1
何らかの理由でini_setが機能していませんが、それは確かに役立ちます!
gabrjan 2013

php.ini/etc/php5/apache2/php.ini... で見つけることができます。私はubuntu 13.04を使用しています...
Enissay

wampにmoodleをインストールするときに同じ問題が発生しましたが、php.iniファイルの構成を解決しました
Muhammad Irfan

1
php.iniの変更後、Apacheを再起動する必要があります
spideringweb

[php7]-sudo nano /etc/php/7.0/apache2/php.ini
Chris

46

上記のすべての答えは正しいですが、場合によっては簡単な方法で回避しています。

このコマンドをスクリプトの最初に挿入するだけです。

set_time_limit(0);

9
これはまったくお勧めされていない
私はほとんど愚かな人です

1
時間制限をオフにしても、無限ループから保護されないため、常に(より大きな)制限を設定してください。
bimlas 2018

@IamtheMostStupidPersonなぜですか?localhostとして使用する場合
Fernando Torres

23

WordPress 4.0へのアップグレード中にこの問題に遭遇しました。デフォルトでは、WordPressは最大実行時間を30秒に制限しています。

WordPressインストールのルートディレクトリにある.htaccessファイルに次のコードを追加して、デフォルトを上書きします。

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes

18

php.iniを編集する

この行を見つけます:

max_execution_time

その値を300に変更します。

max_execution_time = 300

300は、httpリクエストの実行時間が5分であることを意味します。


16

スクリプトがタイムアウトしています。見てみましょうは、set_time_limit()実行時間までの機能を。または、スクリプトをプロファイルして、実行速度を上げます。


1
@HarshaMV彼は、パフォーマンスプロファイルを使用して、スクリプトの開始が遅い理由を特定し、コードを最適化して実行時間を改善することを意味します。これは、ボトルネックが何であるか(CPU対ディスクI / O対ネットワーク)に応じて、役立つ場合とそうでない場合があります。
Dan Bechard、2015年

12

上記のすべてが機能しない場合.htaccessは、スクリプトが置かれているディレクトリにファイルを追加し、これを中に入れます

<IfModule mod_php5.c>
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>

これは私が私の問題を解決した方法であり、私の問題ini_set('max_execution_time', 86400);set_time_limit(86400)解決しませんでしたが、.htaccessメソッドはそうしました。


1
私の場合はうまくいきます。ありがとうございました。GBの場合、MをGに置き換えます
Web_Developer

11

この問題は3つの方法で解決できます。

1)php.iniファイルの使用

2).htaccessファイルの使用

3)Wp-config.phpファイルの使用(Wordpress用)


8

スクリプトの先頭に次の行を追加して、制限をゼロに設定することで、制限を削除できます。

<?php ini_set('max_execution_time', 0); ?>


7

php.iniファイルで変更したことを確認してください。たとえば、「; intl.default_locale = "「; intl.default_locale = en_utf8」に変更して、「extension = php_intl.dll」を追加せずに「国際化拡張(Intl)」を有効にすると、この同じエラーが発生しました。だから私は同様の間違いをチェックすることをお勧めします。



5

を拡張するmax_execution_timeには、ini_setまたはを使用できますset_time_limit

// Set maximum execution time to 10 seconds this way
ini_set('max_execution_time', 10);
// or this way
set_time_limit(10);

!! ただし、両方の関数が再起動し、スクリプトの実行にかかった時間もカウントされることに注意してください

sleep(2);
ini_set('max_execution_time', 5);

register_shutdown_function(function(){
    var_dump(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']);
});

for(;;);

//
// var_dump outputs float(7.1981489658356)
//

そのため、スクリプトを実行できる最大時間を正確に設定する場合は、コマンドを最初にする必要があります。

これら2つの関数の違いは

  • set_time_limit 成功したかどうかの情報は返しませんが、エラー時に警告をスローします。
  • ini_set成功した場合は古い値、失敗した場合は警告/エラーなしでfalseを返します

5

WHMを使えば簡単にできます。ちょうど得た:

WHM->サービス構成-> PHP構成

エディター-> max_execution_time=30

(30はデフォルトでuの値に変更します)


2

WordPressサイトにも同じ問題があります。.htaccessファイルを追加すると、問題なく動作します。

php_value max_execution_time 6000000

0

私の場合、いくつかの変更を加えました:xampp \ phpMyAdmin \ libraries \ config.default.php

私は検索しました:$cfg['ExecTimeLimit'] そして右側の値を変更します...

右側の値を「5000」などの任意の高い値に変更できます。そしてそれは動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.