8

max_execution_timephpクローラースクリプトを変更して、無限の時間を実行できるようにするために、あらゆることを試みました。

php.iniファイルの設定max_execution_time0またはに変更しました100000000が、変更はありません

また、phpスクリプト自体から設定してみました。ini_set('max_execution_time', 0);

すべてのphpスクリプトは同じエラーをスローしますがFatal error: Maximum execution time of 3000 seconds exceeded、何が欠落している可能性があり、最大実行時間制限がないことを確認するにはどうすればよいですか?

phpスクリプト

<?php
ini_set('MAX_EXECUTION_TIME', -1);
error_reporting(E_ALL);  // turn on all errors, warnings and notices for easier debugging
//ini_set('max_execution_time', 123456);
ini_set('max_input_time', -1);
ini_set('memory_limit', '512M');
set_time_limit(0);
date_default_timezone_set('Europe/London');

/*code which scrapes websites*/

?>

phpinfo()

max_execution_time  0   0
max_input_time     -1   -1
4

11 に答える 11

4

PHPでセーフモードをオフにしてから、以下のコードを試してください

if( !ini_get('safe_mode') ){ 
    set_time_limit(0); //this won't work if safe_mode is enabled.
}

これにより、スクリプトを無限に実行できるようになります。

Apacheでは、この行を使用して.htaccessで最大実行時間を変更できます

php_value max_execution_time 200

set_time_limit()phpマニュアル参照。

于 2012-07-07T06:44:31.163 に答える
3

クローラーをapacheの下で実行させないでください。ギアマンのセットアップの一部として、CLIを介してスタンドアロンで実行することをお勧めします。

そうすれば、Webサーバーを占有することはなく、必要なだけ実行できます。もちろんPHPを含め、使用できるGearmanのバインディングを多数見つけることができます。

于 2012-07-07T06:50:57.997 に答える
2

使用する

set_time_limit(0);

スクリプトの上部に

于 2012-07-10T12:10:22.317 に答える
0

max_execution_timeあなたがしていることは、あなたのページの中の何にでも設定することです。ini_setを使用してこれを変更することはできません。変更できるのはmemory_limit1つだけです。

詳細はこちら... php公式サイトから。

それらを変更したい場合は、php.iniで変更してください。

于 2012-07-12T16:58:02.753 に答える
0

Windowsを使用していて、これがCLI実行スクリプトである場合は、これを読んでください

于 2012-07-08T14:49:15.140 に答える
0

WAMPには3つのPHP.iniファイルがあるので、xamppでも3つ見つかる可能性があるので、findで検索して、max_execution_time設定しているものに置き換えます。ただし、実行しているアプリを高速化するためには、大きすぎないように小さいものを維持する必要があります。

于 2012-07-01T19:14:32.660 に答える
0

ignore_user_abort(TRUE);スクリプトではなくブラウザがタイムアウトする可能性があるため、スクリプトで設定を試すこともできます。

php.netマニュアルから

<?php
// Ignore user aborts and allow the script
// to run forever
ignore_user_abort(true);
set_time_limit(0);

詳細については、こちらをご覧ください

http://www.php.net/manual/en/function.ignore-user-abort.php

于 2012-07-08T12:43:30.710 に答える
0

一時スクリプトから確認phpinfo()し、を検索しmax_execution_timeます。設定している値と同じ値であることを確認してください。デフォルトは30秒です。いくつかの異なる値に変更してapacheを再起動し、値をチェックインしphpinfo()て確認してください。

値を変更したときに正しく反映されているphpinfo()場合は、スクリプトにこの値を変更しているコードがあることを意味します。コードで2つのことを検索します。

  1. コードを検索して、ini_set()変更されているかどうかを確認しますmax_execution_time
  2. 検索するset_time_limit()

これらの関数は、スクリプトから実行の最大時間制限を変更できます。.htaccessそれ以外の場合は、この値がどこから設定されているかを確認する必要があります。しかし、これも影響しphpinfo()ます。

于 2012-07-10T09:07:27.570 に答える
0

xamppのドキュメントで次のことがわかりました。たぶんあなたは間違ったphp.iniファイルを編集しようとしていますか?

php.iniの変更が効果がないのはなぜですか?

XAMPP 1.7.1以降、「php.ini」はディレクトリ「\ xampp\php」にのみ存在します。XAMPP1.7.0がディレクトリ"\xampp \ apache\bin"にあるまで。

「php.ini」を変更しても効果がない場合は、PHPが他のPHPを使用している可能性があります。これはphpinfo()で確認できます。URI localhost / xampp / phpinfo.phpに移動し、「ロードされた構成ファイル」を検索します。この値は、PHPが実際に使用している「php.ini」を示しています。

情報:「php.ini」を変更した後、Apacheを再起動する必要があります。これにより、Apache/PHPは新しい設定を読み取ることができます。

于 2012-07-10T13:13:20.197 に答える
0

php.iniでこれらの両方を変更する必要があります(出力で場所を見つけて、それが正しいphp.iniであるかどうかを確認してくださいphpinfo();!)

max_execution_time = 0
max_input_time = 0

その後、いくつかのphpファイルがこれらの変数をローカルで上書きしていないかどうかを確認します。

于 2012-07-13T12:47:23.497 に答える
0

php.iniのメモ帳ファイルを開いて検索または検索するupload_max_filesize = 1000Mと、変更しPost_max_filesize = 1000Mてxamppを再起動し、ローカルのphpmyadminを更新する必要があります。

于 2016-04-18T11:58:39.800 に答える