[PHP-users 22857]Re: バックグラウンドのプロセス終了処理

Mattz mattz @ yahoo.co.jp
2004年 7月 29日 (木) 08:37:40 JST


Mattzです。

| > system() って、「処理が完了しないと戻ってこない」ですよね? "&"つけてて 
| > も。
| > うちの 純粋Vine 2.6 で実験しましたが、戻ってきませんでした。
| 

system関数のマニュアルを読みましょう。
http://jp2.php.net/manual/ja/function.system.php

ここの「注意」によれば
| 注意: この関数を使用してプログラム実行を開始し、バックグラウンドで実行
| したままにしたい場合には、プログラムの出力をファイルまたは他の出
| 力ストリームにリダイレクトする必要があることにも注意して下さ
| い。 さもないと、PHPはそのプログラムの実行が終了するまでハングします。

とあります。逆に言えば出力をリダイレクトすれば外部プログラムを
バックグラウンドで実行させておいてphp側に制御を戻すことは可能と
いうことです。マニュアルにはサンプルコードも載っています。

で、元質問についてですが、シェル側で、自分のプロセスIDをファイル
に吐き出すとかしたらどうでしょうか?apacheがやっているように。
php側ではそのファイルを読み込んで記述されたpidを対象にkillしに行
けばいいのでは?



PHP-users メーリングリストの案内