Symfonyプロセスコンポーネントを介して簡単なプロセスを開始しています。
/**
* @Route("/start_process", name="startProcess")
*/
public function startProcessAction(Request $siteName) {
$process = new Process('"C:\Program Files (x86)\GnuWin32\bin\wget.exe" --no-parent -U Mozilla -r http://google.de/');
$process->start();
return new Response("Process STARTED");
}
この部分は正常に機能します。ただし、処理に時間がかかる場合がありますので、進捗状況と出力を確認したいと思います。プロセスは非同期で開始されるので、ajaxを介して呼び出す別のコントローラーでそれを実行できるはずだと思いました。
別のコントローラーからプロセスオブジェクトにアクセスする方法がわかりません。
プロセスロギングシステムを実装します。これにより、現在実行中のプロセス、費やした時間、1日に実行されたプロセスの数などを確認できるだけでなく、サイトごとの平均プロセス期間に関する統計を収集することもできます。もっとたくさん。
Process
symfonyを拡張する独自のクラスを作成し、process()
メソッドをオーバーライドして、最初に新しいレコードをログに挿入してから、親のprocess()
メソッドを呼び出すだけです。次に、コントローラーで、ajax呼び出しを介してそのステータス(in_process、finished、timeoutなど)を確認するために使用される一意のプロセスIDを返すようにしてください。
または、コントローラーで直接ロギングを行うこともできます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加