如果 PHP shell_exec() 工作时间太长或执行的程序挂起...如何捕获错误?
如果我使用 shell_exec()
执行外部程序 (unix) 并且它运行超过 30 秒,PHP 将因致命错误而终止。那是因为外部程序挂起/崩溃或者我不知道。
我想捕获这个错误。 try{}..catch{}
在这里不起作用。如何判断外部程序是否已挂起?通常我的外部程序运行时间不超过 2 秒。
If I execute with shell_exec()
an external program (unix) and it works for more than 30 seconds, PHP dies with Fatal error. That's because external program hanged/crashed or I don't know.
I want to catch this error. try{}..catch{}
does not work in here. How can I tell if an external program has hanged? Usually my external program runs under 2 seconds.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用“run-tests.php”脚本中定义的这个函数
system_with_timeout
,包含在源代码分发中:(关键是传递给
stream_select
的最后一个参数)该脚本 超时是通过传递如下数组作为第二个参数来给出的:
array('TEST_TIMEOUT' => 200)
。You can use this function
system_with_timeout
defined in the "run-tests.php" script, included in the source distribution:(the key is the last parameter passed to
stream_select
)The timeout is given by passing an array like this:
array('TEST_TIMEOUT' => 200)
as the second parameter.