PHP等待exec完成并输出结果

时间:2016-09-22 14:25:58

标签: php api exec

我有一个php文件,从URL中获取一些参数,然后运行一个exec命令,我想等待并显示exec的结果。这个exec命令大约需要20-30秒才能完成。它永远不会完成,因为网页只是得到一个nginx 502错误的网关错误(超时)..而不是扩展nginx超时错误,因为这是一个很长的连接挂起的不良做法,我怎么能在后面运行php的exec它完成后会在页面上返回吗? 或者有没有更好的方法来实现这一点而不使用PHP?

1 个答案:

答案 0 :(得分:1)

让PHP触发exec到分叉的脚本,以便它在后台运行(以&结尾)。然后该页面应返回一些js,这些js定期通过ajax请求轮询服务器以检查原始脚本的状态。脚本应将其STDOUT和STDERR输出到唯一文件,以便轮询脚本可以检查状态。

编辑:如果您需要知道脚本的退出代码将其包装在另一个脚本中:

#/bin/bash
uniqId=$1
yourscript $uniqId &
myPid=$!
echo $myPid > $uniqId'.pid'
wait $myPid
echo $? > $uniqId'.returned'

./wrapper.sh someIdUniqueToClient &一样打电话。未经测试,但你得到了要点。