重新启动Apache kill后台进程

时间:2012-08-22 09:53:43

标签: php apache background-process

我有一个脚本startbg.php

echo `/usr/bin/php $dir/runbg.php >> $dir/logbg.txt 2>&1 &`;

我从网上打电话(通过HTTP / Apache)。

它在后台进程中运行runbg.php

但是如果我重启Apache(/etc/init.d/apache2 restart),后台进程就会被终止。

无论如何,我可以保持进程在后台运行吗?

3 个答案:

答案 0 :(得分:1)

您可以打开PHP's internal webserver的实例(从PHP 5.4.0开始,CLI SAPI提供了内置的Web服务器。)在我的测试中,httpd.exe没有影响{{1} }}

php.exe:8000

所以可能(未经测试):

<?php 
//Tested with windows

chdir('../php');
//S = Server, listen interface 0.0.0.0 = all : port 8000
//t = Served document root
echo `php -S 0.0.0.0:8000 -t C:\\xampp\\htdocs >> C:\\xampp\\htdocs\\logbg.txt 2>&1 &`;
?>

你不知道怎么杀它:s

答案 1 :(得分:0)

您应该更改startbg.phprunbg.php的流程组ID。

Apache / PHP向其进程组的所有子节点发送信号。 我在该功能上找不到任何文档。 但是,我解决了从spawned调用setpgid()的问题 过程

答案 2 :(得分:0)

允许进程在没有apache的情况下继续运行的一种方法是使其成为一项服务。然后使用您的命令激活服务(service runbg start)。如果你没有使服务正常运行,那么它将取决于你的命令在重新启动后启动,但不会因apache重启而死亡。