0

我用 JavaScript 编写了一个 HTML 页面,一个 PHP 文件和一个 shell 脚本它们都在我运行 shell 脚本的同一台机器上,它将用 Firefox 打开 html 页面,当 JavaScript 完成时,它会 POST 到 getdata.php

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

getdata.php 会做一些事情,然后它会向 shell 脚本发送一个信号

以上是正常行为,恐怕在某些时候,PHP 或 JavaScript 会出错并且不会向 shell 脚本发送信号

shell脚本有什么好的简单的方法来检测JavaScript是否正在运行?

下面的一个人提到我可以让javascript定期向服务器发送请求,比如每2分钟一次,但是如何让shell脚本注意到这个/获取信号?

4

4 回答 4

0

不。

请记住:Javascript 在客户端浏览器上远程运行;PHP(和你的 shell 脚本)在服务器上。

可以做的是在发送网页时(在服务器上)设置警报,并在触发时调用警报处理程序:

于 2012-11-07T15:53:44.737 回答
0

如果您的 JavaScript 正在运行一个长时间处理的脚本,您可能会在设定的时间间隔内间歇性地向服务器提交请求。如果您在设定的时间段后没有看到请求...(间隔 x2 或 w/e)并且在完成后未收到信号,您可以假设 JavaScript 本身已停止运行/中断。

setInterval("methodofcommunicatingtotheserver", 1000); 

等等

于 2012-11-07T16:00:23.723 回答
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 回答