[PHP-users 14629]Re: PHPから、長時間かかる処理をバックグラウンドで呼びたい
kinosita
kino @ deneb.jp
2003年 4月 14日 (月) 14:18:53 JST
こんにちは。木下というものです。
鈴木さん返答ありがとうございます。
> 鈴木と申します。
> > system( '/tmp/a.sh' );
>
> Unixで動かしているのであれば'/tmp/a.sh &'でどうでしょう。
今回は、シェルの方にて、& をつけていまして、PHP 側の system()の処理は
すぐに終わっています。( </html> という文字列が表示されるので、そのように判
断しました。)
ですが、その後も待ちつづけているようなので、CGI( perl )でいうところの
close(STDOUT), close(STDERR)と同等の処理をやりたいと考えています。
> ==================================================
> ● PHP側 script
> <?php
> echo '<html><body>';
> echo 'PHP 1<br>';
> system( '/tmp/a.sh' );
> echo 'PHP 2<br>';
> echo '</body></html>';
> exit();
> ?>
> ==================================================
> ● shell 側スクリプト
> #!/bin/bash
>
> echo "SHELL_START<BR>"
> /usr/bin/nohup /bin/find / -type f -print > /dev/null & #長時間かかる処
理
> echo "SHELL_END<BR>"
> exit;
>
> ==================================================
> ● 実行結果
> <html><body>PHP 1<br>SHELL_START<BR>
> SHELL_END<BR>
> PHP 2<br></body></html>
>
> </html>まで全て出力しきってはいるのですが、
> IEのステータスバー(下側のバー)にて、
> .../test.php を開いています… と出力されます。
PHP-users メーリングリストの案内