我有一个脚本startbg.php
:
echo `/usr/bin/php $dir/runbg.php >> $dir/logbg.txt 2>&1 &`;
我从网上打电话(通过HTTP / Apache)。
它在后台进程中运行runbg.php
。
但是如果我重启Apache(/etc/init.d/apache2 restart
),后台进程就会被终止。
无论如何,我可以保持进程在后台运行吗?
答案 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.php
或runbg.php
的流程组ID。
Apache / PHP向其进程组的所有子节点发送信号。
我在该功能上找不到任何文档。
但是,我解决了从spawned调用setpgid()
的问题
过程
答案 2 :(得分:0)
允许进程在没有apache的情况下继续运行的一种方法是使其成为一项服务。然后使用您的命令激活服务(service runbg start)。如果你没有使服务正常运行,那么它将取决于你的命令在重新启动后启动,但不会因apache重启而死亡。