[PHP-users 14561]Re: set_time_limitについて

Reiji Matsumoto matsumoto @ spline.oc.to
2003年 4月 11日 (金) 06:13:55 JST


Matsumoto @ spです。

すでに皆さんからのご解答が沢山ありますが、要は外部プロセスを実行した時、
すぐに戻ってきてくれない事がある。すぐに戻ってきてくれるようにするには
色々大変だと言う感じですね。私が3つ箇条書きにしたうちの1番上のやつも
要はそういう事です。

> <?php
> system("c:/php/php-cli c:/temp/hoge.php prm1 prm2 > NUL:") ;
> print "aaa";
> ?>

エクセルのコンポーネント(COM)の事は詳しく分からないですが、system関数
を利用して hoge.php をキックしているのは、hoge.php をバックグラウンド
で実行するためだけが理由ですか? だとしたらやはりメインの処理と
なるエクセルで並列処理を模索するのがスマートだと思います(難易度は
ちょっと高いかも知れません)。そうじゃないと、結局エクセルのコンポーネント
が正しく処理を終了したかどうかを判別するのが厄介です。

具体的には以下の処理をどうするかについて考えるといいと思います。

1.エクセルのコンポーネントで並列処理を実現できるか調べる
2.できないならATL、VB等でエクセルを包含する並列処理用のコンポーネント
    を作成する
3.1、2がうまく行ってからこのスレッドに戻りphpでの並列処理を考える

という感じですので、phpの前に、まずはCOM、VBA、VB、VC系の問題を模索す
るのが先だと思います。

あとはphp-cliでhoge.phpをキックするのでは無く、httpアクセスできる場所に
hoge.phpを設置し、localhostに対しソケット通信を行いキックするという方法が
あります。これだとうまくポーリングできるし、エラーも含めて検出可能だと
思います。これもちょっと難易度高いかも知れませんが、この場合はCOMに関
連する問題は無く、PHPだけですべてを完結できます。

他にも色々方法は考えられるのですが、残念ながら比較的難易度の高い問題
だと思います。



PHP-users メーリングリストの案内