4

Symfony Process コンポーネントを介して簡単なプロセスを開始しています。

/**
 * @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 を介して呼び出す別のコントローラーで実行できるはずだと考えました。

別のコントローラーからプロセスオブジェクトにアクセスする方法がわかりません。

4

1 に答える 1

1

プロセス ロギング システムを実装すると、現在どのプロセスが実行されているか、そのプロセスにかかった時間、ある日に実行されたプロセスの数などを確認できるだけでなく、サイトごとの平均プロセス時間に関する統計を収集して、もっとたくさん。

symfony を拡張する独自のProcessクラスを作成し、メソッドをオーバーライドprocess()して、最初に新しいレコードをログに挿入してから、親のprocess()メソッドを呼び出すだけです。次に、コントローラーで、ajax 呼び出しを介してステータス (in_process、finished、timeout など) を確認するために使用される一意のプロセス ID を返すようにしてください。

または、コントローラーで直接ログを記録することもできます。

于 2016-05-04T13:17:55.367 に答える