2017-11-17 3 views
0

ブラウザから実行する必要がある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秒に設定されています。

+0

ブラウザでPHPコードを実行しようとしていますか?そうでない場合、phpはサーバーコードであり、サーバーコードを実行してサーバーからの応答を返すには、ブラウザーでjavascriptが必要です。 – Chris

+0

Apacheで実行されている場合は、[タイムアウト値]をチェックします。これもトリガーされます。しかし、Webサイトで2分間待つと、ブラウザが停止し、ブラウザがリフレッシュされ、サイトから離れることになります。クライアントは2分待たないでしょう。 – Nic3500

+0

httpd.confのタイムアウト値を確認しました。 120秒です。だから私はそれが問題ではないと思う。 –

答えて

0

万が一、sudoがユーザー名とパスワードの入力を待っていて、1分後にタイムアウトしていますか?

+0

いいえ。パスワードなしでスクリプトを実行するためのApacheの許可を与えました。私はそれをテストした。そうでない場合、スクリプトは即座に終了し、「tty required」エラーを表示します。 –

関連する問題