[PHP-users 14634]Re: PHPから、長時間かかる処理をバックグラウンドで呼びたい
kinosita
kino @ deneb.jp
2003年 4月 14日 (月) 15:48:10 JST
こんにちは。木下というものです。
高柳さん、レスありがとうございます。
> 高柳です。
>
> > /usr/bin/nohup /bin/find / -type f -print > /dev/null & #長時間かかる
処理
>
> はずしてるかもしれませんが、標準出力だけでなく、エラー出力も一緒に
> リダイレクトしてみてはいかがでしょう?
> ちなみに、当方の環境で試してみましたが
> > IEのステータスバー(下側のバー)にて、
> > .../test.php を開いています… と出力されます。
> っていうのはそのままのコードでも起こりませんでした。
(1) 上記の部分を以下に書き直してみましたが、結果は変わらずでした。
/usr/bin/nohup /bin/find / -type f -print &> /dev/null &
(2) この行をコメントアウトすると、結果は瞬時に返ってきて
.../test.php を開いています… とは表示されません。
シェル単体を動かすと、普通に稼動します。
今回は、テスト用に時間がかかりそうなfind コマンドを使っています。
==================================================
● shell 側スクリプト
#!/bin/bash
echo "SHELL_START<BR>"
/usr/bin/nohup /bin/find / -type f -print > /dev/null & #長時間かかる処理
echo "SHELL_END<BR>"
exit;
==================================================
今回の疑問点は、シェルの制御が終わっている(SHELL_END,</html>が表示され、
終わっているように見える)にも関わらず、PHP側の制御が終わらない点です。
PHP-users メーリングリストの案内