5

私はスクリプトを持っていますstartbg.php

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

私はウェブから(HTTP / Apache経由で)呼び出します。

runbg.phpバックグラウンド プロセスで実行されます。

しかし、Apache を再起動すると ( /etc/init.d/apache2 restart)、バックグラウンド プロセスが強制終了されます。

プロセスをバックグラウンドで実行し続けることができる方法はありますか?

4

3 に答える 3

1

PHP の内部 Web サーバーのインスタンスを開くことができます(PHP 5.4.0 以降、CLI SAPI は組み込みの Web サーバーを提供します) httpd.exephp.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 &`;
?>

おそらく(未テスト):

echo `/usr/bin/php -S 0.0.0.0:8000 -t /srv/www/yoursite.com/public_html >> /srv/www/yoursite.com/public_html/logbg.txt 2>&1 &$dir/runbg.php >> $dir/logbg.txt 2>&1 &`;

それを殺す方法がわかりません:s

于 2012-08-22T10:30:26.113 に答える
0

startbg.phpまたはのプロセス グループ ID を変更する必要がありますrunbg.php

Apache/PHP は、プロセス グループのすべての子プロセスにシグナルを送信します。この機能に関するドキュメントが見つかりません。ただし、生成さsetpgid()れたプロセスからの呼び出しに関する問題は解決しました。

于 2015-12-08T12:29:15.277 に答える