0

重複の可能性:
Matlab スクリプトの実行が完了するまで PHP を待機させる

さて、 phpからバックグラウンドプロセスを実行して、バックグラウンドプロセス を実行するとうまくいきます。問題は、そのプロセスも返す必要があることです。私にとって明らかな解決策は次のとおりです。

$cmd = "($cmd > $outputfile 2>&1 || echo $? > $returnfile) & echo $! > $pidfile";
exec($cmd);

コマンドラインで生成されたコマンドを実行すると、バックグラウンドになり、ファイルが期待どおりに入力されます。問題は、php exec() の実行時にコマンドがバックグラウンドに移行しないことです (少なくとも、コマンドが終了するまで exec は戻りません)。nohup と wait $pid でバリエーションを試しましたが、まだ解決策はありません。

何かご意見は?

4

1 に答える 1

0

これは注意が必要です。元のプロセスを残したまま、別の処理を実行するためにプロセスをフォークする可能性があります。

http://php.net/manual/en/function.pcntl-fork.php

ただし、これが Web アプリケーションの場合、技術的に非同期であるため、戻りコードまたは STDOUT を取得して親プロセスに戻す組み込みの方法はありません (要求と応答のサイクルは、結果が生成される前に終了する可能性があります)。

ただし、リターン コードや STDOUT をファイルに保存して、後で確認することもできます。

于 2012-10-30T15:01:15.270 に答える