いや、意外とめんどい話でした。
たとえば、CMD(BAT)ファイルで以下を実行させてみます。
●TEST.cmd●
そう、じゃぁ、phpで、以下をやってみます。
このa.exeとb.exeが両方終わるまで、待たされてしまい、
【あれこれ】のとこに来てくれません。
やりっぱなし!
ができないのです。
うぅーん。LinuxでPHPならforkとかできる(ハズな)んだけど。
どうなってんだろ。これ(>_<)
ここ、トリッキーないかがわしいことやればできるのかもしれないけど
(できないかもですが^^;)
つきつめるとこじゃないので、
どうせ最後はC++にするつもりなので、Jobコントローラーの部分なので、
素直にC++で描いてしまおうかとも思ったけど、
いろいろ調べた結果、psexecでできそうな感じもしたんだけど、
やってみるとできない。うぅーーん。
できるかぎりPHP
という方針、若干、無理があったかな^^;
じゃぁ、ってことで、プロセスを立ち上げっぱなしで戻ってくるEXEを作ってみた結果、
ということがわかったので、そういうEXEを経由し、
たとえば、CMD(BAT)ファイルで以下を実行させてみます。
●TEST.cmd●
REM -------------------
start a.exe
start b.exe
REM -------------------
pause
そう、a.exeもb.exeも実行され、終了を待つことなくpause入ります。そう、じゃぁ、phpで、以下をやってみます。
shell_exec('TEST.cmd' );
あれこれ
とかexec('TEST.cmd' );
あれこれ
すると、どうでしょう。このa.exeとb.exeが両方終わるまで、待たされてしまい、
【あれこれ】のとこに来てくれません。
やりっぱなし!
ができないのです。
うぅーん。LinuxでPHPならforkとかできる(ハズな)んだけど。
どうなってんだろ。これ(>_<)
ここ、トリッキーないかがわしいことやればできるのかもしれないけど
(できないかもですが^^;)
つきつめるとこじゃないので、
どうせ最後はC++にするつもりなので、Jobコントローラーの部分なので、
素直にC++で描いてしまおうかとも思ったけど、
いろいろ調べた結果、psexecでできそうな感じもしたんだけど、
やってみるとできない。うぅーーん。
できるかぎりPHP
という方針、若干、無理があったかな^^;
じゃぁ、ってことで、プロセスを立ち上げっぱなしで戻ってくるEXEを作ってみた結果、
- CreateProcessだと戻ってこない
- ShellExecuteなら戻ってくる
ということがわかったので、そういうEXEを経由し、
exec("redshell -proc:php.exe z.php");
exec("redshell -proc:php.exe z2.php");
って感じで連続実行させるテストをしてみます。●a.php
<?php
exec("redshell -proc:php.exe z.php");
exec("redshell -proc:php.exe z2.php");
for($w=0;$w<100;$w++){
echo "call moto {$w}\n";
usleep(300000);
}
?>
●z.php
<?php
for($w=0;$w<100;$w++){
echo "called z-{$w}\n";
usleep(300000);
}
?>
●z2.php
<?php
for($w=0;$w<100;$w++){
echo "called z2-{$w}\n";
usleep(300000);
}
?>
コメント
コメントを投稿