我试图将 PHP 中 shell_exec 的最大执行时间限制为 20 秒,并获取在此期间生成的任何输出。如果 shell_exec 在不到 20 秒内完成,则脚本应直接继续。
更具体地说,我正在开发一个函数,该函数可以遍历 subversion 存储库的大量修订。对于每个修订版,它都会获取 svn diff 并计算添加的行数。问题是如果在修订中提交了非常大的文件,脚本将挂起。因此,我试图限制每个 svn diff 命令的执行时间。
popen() 与 sleep() 组合不是一个选项,因为它似乎使脚本在每次迭代中休眠 20 秒,这在 100 次迭代中是不可行的。设置 max_execution_time 也不是一个选项,因为它会返回一个致命错误。