我正在寻找一种方法来运行超时的
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);
然后我将分析输出并决定再尝试一次,或者抛出异常并退出我的脚本.