[PHP-users 14642]Re: PHPから、長時間かかる処理をバックグラウンドで呼びたい
kinosita
kino @ deneb.jp
2003年 4月 14日 (月) 16:21:53 JST
こんにちは。木下というものです。
三島さん、レスありがとうございます。
> 三嶋です。
> > 今回の疑問点は、シェルの制御が終わっている(SHELL_END,</html>が表示さ
れ、
> > 終わっているように見える)にも関わらず、PHP側の制御が終わらない点で
す。
>
> http://www.php.net/manual/ja/function.system.php
> に、
> 「注意 この関数を使用してプログラム実行を開始し、バックグラウンドで実
> 行 したままにしたい場合には、プログラムの出力をファイルまたは他の出力
> ストリームにリダイレクトする必要があることにも注意して下さい。 さもな
> いと、PHPはそのプログラムの実行が終了するまでハングします。 」
>
> と書かれています。
>
> 仮に
>
> system( '/tmp/a.sh > /dev/null' );
やってはみましたが、ダメでした。PHP側の制御はおわりません。
bash-2.03# ps -aef | grep nobody | grep find
nobody 14123 1 6 16:13:54 ? 0:02 /bin/find / -type f -print
バックグラウンドで、稼動しているプロセスをroot権限で、kill すると、
瞬時に制御が戻ってきました。
この程度のこと( CGI+perl ならば経験あったので)は、OSやPHPのバージョンに
依存しないだろうと思い、最初にはかかなかったのですが、環境は以下のとおりで
す。
OS: SunOS icsdditw1 5.8 Generic_108528-18 sun4u
PHP: 4.3.0
PHP-users メーリングリストの案内