首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一段时间后抛出超时异常

一段时间后抛出超时异常
EN

Stack Overflow用户
提问于 2015-06-12 07:11:18
回答 1查看 723关注 0票数 0

我正在使用这个php脚本。基本上,它使用命令shell_exec来运行javascript爬虫。当它工作时,它会返回一个字符串。但是,有时js爬虫会变得没有响应,shell_exec就会挂起。

我希望能够将shell_exec包装在try catch中,并在60秒后执行catch,然后优雅地处理它,这样shell_exec就不会无限期地挂起。

代码语言:javascript
复制
try {
    $output = shell_exec($input);
} catch (Exception $e) {
    echo '60 seconds passed and response is: ',  $e->getMessage(), "\n";
}

我不确定在PHP中有什么命令可以说“让我们尝试运行这个命令60秒,如果它超过了这个时间,那么让我们抛出一个异常并处理该异常。”

EN

回答 1

Stack Overflow用户

发布于 2015-06-12 07:22:39

shell_exec()是一个阻塞函数,这意味着它会阻塞脚本的执行。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30792961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档