を停止したとき...トリガーEXECコマンドを使用して、PHPファイル:どのようにプロセスは、以下のPHPコードを考える
<?php
exec('myscript.php');
exec('finish.php');
?>
がmyscript.phpが動作して停止した際に伝える方法があります参照するには?
myscript.php
が完了するまでfinish.php
が実行されないようにしたいと考えています。
を停止したとき...トリガーEXECコマンドを使用して、PHPファイル:どのようにプロセスは、以下のPHPコードを考える
<?php
exec('myscript.php');
exec('finish.php');
?>
がmyscript.phpが動作して停止した際に伝える方法があります参照するには?
myscript.php
が完了するまでfinish.php
が実行されないようにしたいと考えています。
exec()呼び出しは、外部ジョブが完了するまでブロックされます。 myscriptコールをバックグラウンドで実行するように強制しない限り、myscript.phpが実行されている間はfinish.phpは実行されません。
$output = shell_exec("myscript.php");
これはちょうど推測ですが、私は実行エラーが表示されることを喜んで賭けています。これは、myscript.phpに必要なbang行(#!/ usr/bin/php)と実行するための+ xフラグがないためです。
* UPDATE *
あなただけ
include("myscript.php");
include("finish.php");
これは、あなたが探している結果を持つことになりますことができますようにまた、それはそうです。実際に実行中のプロセスの外側でこれらを実行したい場合は、上記のbang行についてのコメントを参照し、スクリプトを実行可能にしてください。
myscript.phpの実行を停止する方法はありますか?
finish.php
を実行すると、myscript.php
の実行が終了します。バックグラウンドプロセスの場合は、たとえばmyscript.php
が終了したときにファイルを作成するなどの「ハッピー」を行い、そのことを確認できます。 the docsから
:
プログラムは、それがバックグラウンドで実行を継続するためには、この機能を起動した場合は、プログラムの出力をファイルや別の出力ストリームにリダイレクトする必要があります。そうしないと、プログラムの実行が終了するまでPHPが停止します。
もっと柔軟性があるので、proc_openを使用することをお勧めします。 また、exec()の場合、2番目のものは最初のものが終了した後にのみ呼び出されることにも注意してください。