2012-11-07 80 views
0

我用JavaScript写了一个HTML页面,一个PHP文件和一个shell脚本 它们全都在同一台机器上我运行shell脚本,它会打开Firefox的页面, 当JavaScript完成时,它会POST到访问getdata.phpshell脚本可以检测JavaScript是否在Firefox上运行?

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

访问getdata.php会做的东西,然后它会在一段时间内的信号发送到shell脚本

上面是正常的行为,我很害怕,在PHP或JavaScript遇到错误,不要将信号发送到shell脚本

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

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

回答

0

正如有人建议,你可以使用setInterval查询服务器,看看JavaScript引擎是否仍在运行,但这也意味着只有执行setInterval的JavaScript线程是实际运行的线程(取决于哪种错误可能会出现)。你可以将这个帖子写到“status.php”,这个文件可以接触/写入磁盘上的一个文件,bash脚本可以轮询它来查看它是否定期更新。

但是我建议你看看phantomjs这样的东西,它可以让你解决这些问题。

+0

当我发布到status.php时,status.php会自动显示在浏览器中而不是原始的html页面,如何防止这种情况发生? – user1769686

+0

使用XMLHTTPRequest调用时,大多数JavaScript库以某种方式包装它(例如带有$ .get/$ .post/$ .ajax的jQuery)。 – MatsLindh

+0

是否有任何代码片段?我认为得到和发布仍然要求该PHP页面回到浏览器 – user1769686

0

编号

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

什么你可以做的是建立一个报警(在服务器上)当您发送网页,并调用报警处理程序,如果它触发:

+0

它们都在同一台机器上,我只是使用本地apache服务器 – user1769686

+0

的运行时间是varialbe,所以报警不太合适 – user1769686

0

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

setInterval("methodofcommunicatingtotheserver", 1000); 

+0

不错的主意,但如何让shell脚本注意到这一点? – user1769686

0

..as之前说:

在这种情况下你最好的选择是,要么:

  1. 重新设计你的脚本。它是绝对必要的通过javascript in-browser发送请求到php页面吗?
  2. 如果对上述的回答是肯定的,看看Selenium,特别是Selenium WebDriver

它并不提供绑定到bash脚本开箱即用,但它很容易从其他语言,如Python(或PHP,他们说)使用。

相关问题