php – shell_exec()超时管理&exec()

前端之家收集整理的这篇文章主要介绍了php – shell_exec()超时管理&exec()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用我编写的包装类运行第三方脚本,该类调用 shell_exec()和管道到我稍后使用PHP代码解析的文件中.我应该提到这是有效的,但是我正在尝试增强功能,遇到了一个我没想过的用例.

如何在shell_exec()上管理超时?我想把它包装在try()catch()中,但我不知道如何最好地处理时间组件.

我一直在阅读有关shell_exec()和exec()的几个问题,似乎通过将输出参数传递给exec(),你可以得到一个返回,但这确实依赖于脚本以返回状态结束.再加上我的迷你测试页面,我似乎无法让它返回任何输出

我想到的另一个选项是使用模态对话框,使用ajax样式微调器,同时使用它运行的脚本,并在javascript中设置手动超时.然后,它给用户一个关于它失败/超时和结束的模型对话框消息.

这个用例有没有可接受的方法

我的迷你测试包括以下内容,

public $e_return = array();
public $e_status = '';
// Paths are absolute from /
public function execCheck($domain){
    exec($this->ssl_check_path." -s ".$domain." -p 443 > ".$this->folder.$this->filename." 2>&1 &",&$this->e_return,&$this->e_status);
}

// Returns
Array
(
)

0

使用这个问题作为参考,
Can’t execute PHP script using PHP exec

http://www.php.net/manual/en/function.exec.php

我建议你研究使用proc_open.您可以将其配置为返回流资源,手动保留计时器,如果计时器在进程完成之前到期,则可以使用proc_terminate终止它.如果它在计时器到期之前完成,那么你可以使用proc_close然后使用stream_get_contents来获取本来写入stdout的数据.

http://www.php.net/manual/en/function.proc-open.php

猜你在找的PHP相关文章