php - exec() 超时

标签 php timeout exec

我正在寻找一种在超时情况下运行 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/

相关文章:

php - 在移动服务器通信中使用密码作为加密 key 的一部分

php不显示最低值

php - 根据第一个表的内容连接表

c# - 从多个线程更新 DataGrid

ios - 使用AWSS3TransferManagerUploadRequest如何设置超时间隔?

c# - C#中SQL Server超时异常和SqlCommand超时异常的区别

c - 使用管道和 exec 时出错。第二个命令不退出

php - 如何通过同时提供 INDEX 将值分配给 JSON

java - 从java执行批处理文件并打开运行批处理文件的cmd

c - 使用 exec() 系列运行 "cd"命令