不知道这是否更适合服务器故障或堆栈溢出,但在这里。
我在Apache MPM prefork上使用mod_php,并产生一个像这样的新进程:
<?php exec("/usr/bin/php -f backgroundScript.php &"); ?>
假设新的backgroundScript.phpsubprocess运行了很长一段时间…
1)父PHP过程现在是否被认为是空闲的? 它是否返回到服务器池?
2)如果Apache杀死父PHP进程返回MinSpareServers ,那么backgroundScript.php也会被清理干净或继续无限期运行?
3)有没有其他的方式,Apache可能会无意中杀死backgroundScript.phpsubprocess? service httpd stop也许?
你想在后台运行应用程序,忘记?
关于这个在php.net上有很多post
另外,从执行官那里注意到:
注意:
如果一个程序用这个函数启动,为了继续在后台运行,程序的输出必须被redirect到一个文件或另一个输出stream。 如果不这样做将导致PHP挂起,直到程序执行结束。
在这里 , 在这里和这里等等
我有一些丑陋的代码,违反了这些规则:
<?php echo "pre"; exec("someuglylongandworkingthingwithoutput &"); echo "post"; ?>
刚刚在我的Fedora盒子上用默认的apache + php(prefork +模块)testing过,我用killall -9 / usr / sbin / httpd
添加/dev/null – 一切正常,父进程ID是“1”。