0

IIS と SQL Server 2012 を実行する Windows 2012 Server を使用しています。

コマンド プロンプトから PHP スクリプトを実行しようとしています。スクリプトの実行には約 1 時間かかります。このようにコマンドラインから直接実行すると、 c:\PHP>php.exe "D:\Web\phpScript.php" 正常に実行されます。ここでも、実行に約 1 時間かかりますが、問題なく完了します。

問題は、別の PHP ページから実行する必要があることです。したがって、このコード - exec('start c:\php\php.exe "D:\Web\phpScript.php"'); PHP ではスクリプトを実行します。そのようにPHPから実行すると、約30分間は正常に動作しますが、何らかの理由でWindowsは約30分後にプロセスを強制終了します。

Windows でタスク マネージャーを監視してきましたが、コマンド プロンプトから直接実行した場合と、PHP を使用してコマンドを実行した場合とで、プロセスの実行方法に違いは見られません。どちらもバックグラウンド プロセスとして表示され、タスク マネージャーではまったく同じように見えますが、何らかの理由で、Windows はコマンド プロンプトから直接実行されたプロセスではなく、PHP から実行されたプロセスを強制終了しています。

PHP をリアルタイムで実行しようとしたこともありましたが、優先度が高ければ殺されなかったかもしれませんが、それは役に立ちませんでした。

私は本当にこれで立ち往生しています。

どんな助けでも素晴らしいでしょう。

ありがとう!

4

1 に答える 1

0

PHP の設定に関係している場合は、スクリプトの先頭でこれを使用して、特定の実行時間を強制的に許可できます。

set_time_limit(60*60*2); // allows 2 hours execution time

次に、外部ファイルを実行するinclude('D:\Web\phpScript.php');には、スクリプトで使用するだけです。

http://php.net/manual/en/function.set-time-limit.php

それ以外の場合は、サーバーの問題であれば、私を打ち負かします。もちろん、マシンに PHP がインストールされている場合は、コマンド プロンプトではなく Web ブラウザで実行することもできます。

于 2013-04-07T18:55:05.727 に答える