[PHP-users 14646]Re: PHPから、長時間かかる処理をバックグラウンドで呼びたい
kinosita
kino @ deneb.jp
2003年 4月 14日 (月) 17:23:44 JST
こんにちは。木下というものです。山本さん、貴重な情報ありがとうございます。
> サイボウズの山本と申します。
>
> 推測になりますが、SunONEでは子プロセス(CGI)の
> 終了待ちに waitpid でプロセスグループごと待って
> いたりするのではないでしょうか。
> とかしていて。そうするとシェルでは子プロセスの
> プロセスグループを変更できないので回避は辛いですね。
Apache は、過去に何度も扱っているのですが、SunONEは今回初めてでして、
こういった情報をいただけると助かります。
> kinosita wrote:
> > 高柳さんのところで、問題なく動いたと言うことであれば、考えづらいです
が、
> > 環境依存でしょうか?
> > (WEBサーバーに、SunONE というものを使っているらしく、多少、身に覚えが
あり
> > ます)
結論としては、通常の環境(=高柳さんの環境=Apache+PHP?) などでは、
> http://www.php.net/manual/ja/function.system.php
> に、
> 「注意 この関数を使用してプログラム実行を開始し、バックグラウンドで実
> 行 したままにしたい場合には、プログラムの出力をファイルまたは他の出力
> ストリームにリダイレクトする必要があることにも注意して下さい。 さもな
> いと、PHPはそのプログラムの実行が終了するまでハングします。 」
に気をつけながら、PHPのsystem() + OSのnohup で処理すると、
長時間の処理はハングせずに終わるが、WEBサーバーがSunONE だと、
ハングする問題をクリアするのは困難。
===============================================================
SunONE を調べて、山本さんのいうことが正しかったら、素直に諦めて、
DBにコマンドを登録+cron で実行で逃げることにします。
今回、レスをくださった方々、少しでも考えてくれた方々ありがとうございまし
た。
PHP-users メーリングリストの案内