情景:
我尝试的每一种方法似乎都会导致PHP仍在等待shell脚本完成执行。我试过的方法:
nohup ./script.sh > run.log &
nohup ./script.sh > run.log 2>&1
nohup ./script.sh > run.log 2>&1 &
./script.sh &
./script.sh > run.log 2>&1
./script.sh > run.log &
我认为我可能会遗漏一些非常明显的事情。有什么想法吗?
答案 0 :(得分:2)
我认为您可以通过使用脚本启动screen
实例来实现此目的:
screen -d -m 'bash ./script.sh > run.log'
答案 1 :(得分:1)
你试过shell_exec吗?
您可能对这篇文章感兴趣:Is there a way to use shell_exec without waiting for the command to complete?
答案 2 :(得分:1)
你的5号方法已接近但你需要将它与6这样的结合起来
shell_exec("/script.sh > run.log 2>&1 &");
或像这样重定向到/ dev / null
shell_exec("/script.sh > /dev/null 2>/dev/null &")
看来PHP开发服务器无法正确分叉命令。 使用像Apache或NGinx这样的真实Web服务器可以解决问题。