2012-01-02 4 views
0

$escaped_check = escapeshellcmd("/usr/bin/php -f /opt/status/check.php " . $_SERVER['REMOTE_ADDR'] . " >> /dev/null 2>&1 &"); shell_exec($escaped_check); PHPの実行

をやったときに、私は非ブロッキングスレッドのためにバックグラウンドで上記のコードを実行しようとしていますが、私はときcheck.phpを終了するかどうかはわかりません仕事は終わった。

+0

私はこの問題を理解していません。実行が終了したらcheck.phpを自動的に終了しませんか? – Sjoerd

答えて

1

shell_execの代わりにpopenすることができます。

次に、あなたはproc_terminate

ことによってそれを終了するか、proc_get_statusを呼び出すことにより、プロセスIDを取得することができます。

PIDを使用すると、プロセスも終了できます。

こちらがお役に立てば幸いです。

0

PHPスクリプト(check.php)は、バックグラウンドでの実行が終了すると自動的に終了する必要があります。 PHPスクリプト(check.php)の最後にexit()またはdie()を使用して、スクリプトが飛び出さないようにすることができます。

また、次のコマンドを使用して$ pidを取得することもできます。たとえば、23456です。 "echo $!" partはプロセスIDを送信します。

$pid = shell_exec('php /path/to/script/cli_test.php argument1 > /dev/null 2>&1 & echo $!') 

端末では、psコマンドを使用して、まだバックグラウンドで動作しているかどうかを確認してください。

ps 23456