我正在尝试执行一个可能很长的后台进程来响应传入的AJAX请求,但是使用nohup
或setsid
通过shell_exec
会导致服务器分叉炸弹。我们使用suexec
和FastCGI,当它发生轰炸时,整个服务器都会被抓取。
shell_exec("nohup /home/me/myscript.php");
脚本现在没有做任何冗长的事情,只输出到一个不存在的文件(从未发生过,因为它会先爆炸)
谢谢!
答案 0 :(得分:0)
我总是在http://php.net/manual/en/intro.pcntl.php看到警告(尽管你使用nohup
,我知道)作为警告,从网络服务器进程分叉并不是一种安全的方法。如果后台进程需要启动,我将创建一个守护进程/始终正在运行的作业进程,它可以接收这些请求(并且与Web服务器没有任何关系),可以随意分配/ nohups。