我正在寻找一种在超时情况下运行 PHP 进程的方法。目前我只是在使用 exec()
, 但它不提供超时选项。
我还尝试使用 proc_open()
打开进程并使用 stream_set_timeout()
在生成的管道上,但这也不起作用。
那么,有什么方法可以在超时的情况下运行命令(准确地说是 PHP 命令)? (PS:这是针对 max_execution_time
限制失败的情况,因此无需建议。)
(顺便说一句,我还需要检索进程的返回码。)
最佳答案
我对这个主题进行了一些搜索并得出结论,在某些情况下(如果您使用的是 linux)您可以使用“timeout”命令。非常灵活
Usage: timeout [OPTION] DURATION COMMAND [ARG]...
or: timeout [OPTION]
在我的特殊情况下,我试图从 PHP 运行 sphinx 索引器,有点像迁移数据脚本,所以我需要重新索引我的 sphinx 文档
exec("timeout {$time} indexer --rotate --all", $output);
然后我将分析输出并决定再试一次,或者抛出异常并退出我的脚本。
关于php - exec() 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419122/