exec($ cmd、$ output、$ exitCode)を介してバックグラウンドで実行されるphpスクリプトの終了ステータスコードを取得する方法はありますか?
例えば:
exec('php script.php &', $output, $exitCode);
末尾の「&」が含まれていない場合、$ exitCodeは期待どおりに機能し、それ以外の場合は常に0になります。
おそらくPradeepのソリューションとまったく同じものを見つけました。誰かがこれについて関数のドキュメントページに投稿しました。 http://www.php.net/manual/en/function.exec.php#101506
ここにいる人にとって、私の解決策は、引数としてスクリプトを受け取るphpスクリプトを作成することでした。新しいスクリプトはバックグラウンドで呼び出され、終了ステータスを適切に処理します。
例えば:
$cmd = 'php asynchronous_script.php -p 1';
exec("php script_executor.php -c'$cmd' &");
2番目のスクリプトは次のようになります
$opts = getOpt('c:');
$cmd = rtrim($opts['c'], '&');
$exitCode = 0;
$output = '';
exec($cmd, $output, $exitCode);
if ($exitCode > 0) {
...
}