2012-04-04 6 views

答えて

2

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

0
$output = shell_exec("myscript.php"); 

これはちょうど推測ですが、私は実行エラーが表示されることを喜んで賭けています。これは、myscript.phpに必要なbang行(#!/ usr/bin/php)と実行するための+ xフラグがないためです。

* UPDATE *

あなただけ

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

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

0

myscript.phpの実行を停止する方法はありますか?

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

プログラムは、それがバックグラウンドで実行を継続するためには、この機能を起動した場合は、プログラムの出力をファイルや別の出力ストリームにリダイレクトする必要があります。そうしないと、プログラムの実行が終了するまでPHPが停止します。

0

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

関連する問題