次のphpコードを考えると...
<?php
exec('myscript.php');
exec('finish.php');
?>
myscript.php がいつ実行を停止したかを知る方法はありますか?
finish.php
完了するまで実行しないようにしたいmyscript.php
です。
exec() 呼び出しは、外部ジョブが完了するまでブロックされます。myscript 呼び出しの 1 つをバックグラウンドで強制的に実行しない限り、myscript.php が実行されている間に finish.php が実行されることはありません。
proc_open を使用することをお勧めします。柔軟性が大幅に向上します。また、exec() の場合、2 番目のものは最初のものの終了後にのみ呼び出されることに注意してください。
$output = shell_exec("myscript.php");
これは単なる推測ですが、実行エラーが表示されることは間違いありません。これはおそらく、myscript.php に、実行に必要な bang 行 (#!/usr/bin/php) と +x フラグがないためです。
* アップデート *
あるいは、あなたができるようです
include("myscript.php");
include("finish.php");
これにより、探している結果が得られます。実行中のプロセスの外でこれらを実際に実行したい場合は、上記のバン行とスクリプトを実行可能にすることに関するコメントを参照してください。
myscript.php がいつ実行を停止したかを知る方法はありますか?
実行されればfinish.php
実行myscript.php
は終了です。バックグラウンド プロセスの場合は、たとえば、myscript.php
終了時にファイルを作成するなどの「ハッキー」な処理を実行して、それを確認することができます。
ドキュメントから:
プログラムがこの関数で開始された場合、バックグラウンドで実行を継続するには、プログラムの出力をファイルまたは別の出力ストリームにリダイレクトする必要があります。そうしないと、プログラムの実行が終了するまで PHP がハングアップします。