[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 メーリングリストの案内