ブラウザから実行する必要があるPHPスクリプトがあります。私はそのスクリプトによって返された出力を保持して$たい私のPHPスクリプトのexec関数が実行される前にサーバーが接続を閉じる
exec("sudo scriptname 2>&1", $out);
:そのスクリプト内では、私はこのようなexec()関数を使用します。さらなる処理のために出力が必要です。スクリプトの実行には約2分かかります。問題は、ブラウザでPHPスクリプトを実行すると、1分間実行されてから停止するということです。このため、PHPスクリプトが死んで、「ページレスポンス」と似たエラーが表示されます。 Chromeで
画面このようなエラーが表示され、:Mozillaの上
ServerName.com unexpectedly closed the connection
ERR_INCOMPLETE_CHUNKED_ENCODING
を、画面は(完全な白)ブランクになります。
クロムエラーを検索した後、PHPスクリプトが実際に何もしていないのにexec()関数を待っているので、Webサーバー(私はApacheを実行しています)がクライアントからの非アクティブな接続を閉じると思います。終わる。
私は、設定しようとしたmax_execution_timeに、max_input_time、 default_socket_timeout と、これはPHPスクリプトを殺さないかもしれないが、それが機能しなかったことを願っては、set_time_limit(0)使用。
PTHREADSを使用して、exec()関数を実行し、もう一方がそれを監視するか、何らかの形でサーバーをビジー状態にする2つのスレッドを生成したくありません。
私はPHPまたはApache内で60秒に設定されているため、サーバーからの接続が切断されると考えています。私はそれが何であるか分かりません。
また、PHPスクリプトはexec()内のスクリプトを1分未満で置き換えると完全に動作します。
EDIT: Apacheタイムアウト値は120秒に設定されています。
ブラウザでPHPコードを実行しようとしていますか?そうでない場合、phpはサーバーコードであり、サーバーコードを実行してサーバーからの応答を返すには、ブラウザーでjavascriptが必要です。 – Chris
Apacheで実行されている場合は、[タイムアウト値]をチェックします。これもトリガーされます。しかし、Webサイトで2分間待つと、ブラウザが停止し、ブラウザがリフレッシュされ、サイトから離れることになります。クライアントは2分待たないでしょう。 – Nic3500
httpd.confのタイムアウト値を確認しました。 120秒です。だから私はそれが問題ではないと思う。 –