一段时间后抛出超时异常

时间:2015-06-11 23:11:18

标签: php

我正在使用这个PHP脚本。基本上它使用命令shell_exec来运行javascript搜寻器。当它工作时,它返回一个字符串。但是,有时js爬虫会无响应,而shell_exec只会挂起。

我希望能够在try catch中包装shell_exec,并在60秒后执行catch并优雅地处理它,以便shell_exec不再无限期挂起。

self.group = ko.observable(json.group);

我不确定我在PHP中可用的命令实质上是说“让我们尝试运行此命令60秒,如果超过那个时间,那么让我们抛出异常并处理该异常。”

1 个答案:

答案 0 :(得分:0)

shell_exec()是一个阻止函数,这意味着它会阻止脚本继续运行。

如果您可以控制它正在运行的可执行文件,您可以执行shell_exec("nohup $input &");并让它编写一些已定义的输出文件和状态文件,然后使用等待sleep(n)的PHP while循环要么出现,要么是时间耗尽。

还有其他一些功能可以提供更细粒度的控制,比如proc_open(),但我不是很熟悉,所以我不确定如何利用它们来创建超时异常。