2

簡単に言うと:

ini_set("max_execution_time")、従来の URL 呼び出しで script.php を呼び出すと機能します

script.php が別の php スクリプト/プロセスから exec() 関数を介して実行されている場合、ini_set ("max_execution_time")は機能しません。

今、私の解決策は、script.php をアクティブにしようとしている exec() 関数と、(外部の) cron ジョブを介して呼び出される同様の関数がいくつかあるため、オプション 1 を単にリレーすることではありません。

誰が何が起こっているのか知っていますか?

以下のヘルプからの場合は、コードをアクティブ化しています。

exec('/usr/bin/env php ./script.php');
sleep(30);
exec('/usr/bin/env php ./script2.php');

script と script2.php の両方をアクティブにしますが、ini_set() が FALSE を返すと両方とも失敗します。

4

4 に答える 4

1

Barmarが指摘したように、php用のINIファイルがいくつかあります。少なくとも1つはCGI用、もう1つはCLI用です。また、ini_setまたは.htaccess内でいくつかの設定を行うことができます。どの設定をどこで変更できるかを定義する設定ファイルがいくつかあります。静かに、CLIスクリプト内でmax_execution_timeを変更することは許可されていない可能性があります。私が正しく覚えていれば、デフォルトでは0、つまり無制限であるはずです。

于 2013-02-22T21:41:12.510 に答える
1

Barmarが前述したように、2 つのバージョンには異なる PHP.ini ファイルが使用されています。

CLI バージョンはセーフ モードで実行されていますか?

max_execution_time は、セーフ モードで ini_set() を使用して実行時に設定されない場合があります。また、CLI バージョンは、実行時間制限のためにデフォルトで 0 に設定されています。

http://php.net/manual/en/info.configuration.php

于 2013-02-22T21:46:52.110 に答える
0

ini_set() の代わりに set_time_limit(seconds) を使用する

于 2013-02-22T21:35:21.433 に答える