2

次のphpコードを考えると...

 <?php   
     exec('myscript.php');
     exec('finish.php'); 
?>

myscript.php がいつ実行を停止したかを知る方法はありますか?

finish.php完了するまで実行しないようにしたいmyscript.phpです。

4

4 に答える 4

2

exec() 呼び出しは、外部ジョブが完了するまでブロックされます。myscript 呼び出しの 1 つをバックグラウンドで強制的に実行しない限り、myscript.php が実行されている間に finish.php が実行されることはありません。

于 2012-04-04T21:52:36.210 に答える
0

proc_open を使用することをお勧めします。柔軟性が大幅に向上します。また、exec() の場合、2 番目のものは最初のものの終了後にのみ呼び出されることに注意してください。

于 2012-04-04T21:57:25.707 に答える
0
$output = shell_exec("myscript.php"); 

これは単なる推測ですが、実行エラーが表示されることは間違いありません。これはおそらく、myscript.php に、実行に必要な bang 行 (#!/usr/bin/php) と +x フラグがないためです。

* アップデート *

あるいは、あなたができるようです

include("myscript.php");
include("finish.php");

これにより、探している結果が得られます。実行中のプロセスの外でこれらを実際に実行したい場合は、上記のバン行とスクリプトを実行可能にすることに関するコメントを参照してください。

于 2012-04-04T21:52:55.393 に答える
0

myscript.php がいつ実行を停止したかを知る方法はありますか?

実行されればfinish.php実行myscript.phpは終了です。バックグラウンド プロセスの場合は、たとえば、myscript.php終了時にファイルを作成するなどの「ハッキー」な処理を実行して、それを確認することができます。

ドキュメントから:

プログラムがこの関数で開始された場合、バックグラウンドで実行を継続するには、プログラムの出力をファイルまたは別の出力ストリームにリダイレクトする必要があります。そうしないと、プログラムの実行が終了するまで PHP がハングアップします。

于 2012-04-04T21:54:23.547 に答える