0

JavaScript、PHPファイル、シェルスクリプトを使用してHTMLページを作成しました。これらはすべて、シェルスクリプトを実行する同じマシン上にあります。これにより、FirefoxでHTMLページが開き、JavaScriptが終了すると、getdata.phpにPOSTされます。

<form id="hidden_form" method="POST" action="getdata.php" ></form>

getdata.phpは何かを実行してから、シェルスクリプトに信号を送信します

上記は通常の動作です。恐れ入りますが、PHPまたはJavaScriptでエラーが発生し、シェルスクリプトにシグナルが送信されません。

JavaScriptが実行されているかどうかをシェルスクリプトが検出するための優れた簡単な方法はありますか?

以下の人は、JavaScriptが2分ごとのように定期的にサーバーにリクエストを送信できるようにすることができると述べましたが、シェルスクリプトにこれを通知/シグナルを取得させる方法はありますか?

4

4 に答える 4

0

JavaScriptが処理時間の長いスクリプトを実行している場合は、設定された間隔でサーバーにリクエストを断続的に送信できます。設定された期間(間隔x2またはw / e)の後にリクエストが表示されず、完了時にシグナルが受信されなかった場合、JavaScript自体の実行が停止/中断したと見なすことができます。

setInterval("methodofcommunicatingtotheserver", 1000); 

于 2012-11-07T16:00:23.723 に答える
0

いいえ。

注意: Javascript はクライアント ブラウザ上でリモートで実行されています。PHP (およびシェル スクリプト) はサーバー上にあります。

できることは、Web ページを送信するときに (サーバー上で) アラームを設定し、それがトリガーされた場合にアラーム ハンドラーを呼び出すことです。

于 2012-11-07T15:53:44.737 に答える
0

..前に述べたように:いいえ。

この場合の最適なオプションは、次のいずれかです。

  1. スクリプトを再設計します。ブラウザー内のjavascriptを介してphpページにリクエストを送信することは絶対に必要ですか?
  2. 上記の答えが「はい」の場合は、Selenium、特にSelenium WebDriverを見てください。

すぐに使用できる bash スクリプトのバインドは提供されませんが、Python (または PHP と言います) などの他の言語から使用するのは非常に簡単です。

于 2012-11-07T16:01:17.337 に答える
0

誰かが示唆したように、setInterval を使用してサーバーをポーリングして、javascript エンジンがまだ実行されているかどうかを確認できますが、setInterval を実行している javascript スレッドだけが実際に実行されていることを意味する可能性があります (発生する可能性のあるエラーの種類によって異なります)。ディスク上のファイルにタッチ/書き込みする「status.php」への投稿を行うことができ、bashスクリプトは定期的に更新されているかどうかを確認するためにポーリングできます。

ただし、この種の問題を解決できるphantomjsのようなものを調べることをお勧めします。

于 2012-11-07T16:29:13.630 に答える