2016-08-12 10 views
0

多くの時間がかかる機能があり、バックグラウンドで実行され、終了時にメールを送信します。 これらの関数はResponseとしてPDFを生成し、可能であればこのPDFを電子メールに添付します。symfony3 - コントローラーがバックグラウンドタスクを起動し、終了時にメールを送信する

これは、多くの時間を要し、スタンドアロンの関数である。

$passages = $em->getRepository(PasserColle::class)->calculClassementAction($id, $group); 

この関数は返す関数imprimerAction($ IDを、$リクエスト)で私のコントローラに含まれています:

return new Response($html2pdf->Output('Classement.pdf'), 200, array('Content-Type' => 'application/pdf')); 

私はプロセスコンポーネントを使用しようとしましたが、かっこで入力する内容がわからないため、動作させることができません:

$process = new Process('ls -lsa'); 

そして、私が望む出力を得る方法。

答えて

2

これを行うにはRabbitMQとこのbundleをsymfonyに使用できます。

概念は単純です。 の生産者がメッセージを送信し(希望の形式で)、消費者がこれらのメッセージを消費します。メッセージは交換で公開され、消費者が新しいメッセージを待っているキューにルーティングされます。

あなたの例では、に連絡するメッセージを生成できます。は、PDF生成を行い、電子メールを送信することができます。あなたのケースでは、例えば、$id$groupという形式のJSON形式でメッセージをパブリッシュし、消費者は自分がしなければならないことを行います。

これを実行する方法については、linkに従ってください。あなたがプロセスコンポーネントを使用したい場合は

はそうでない場合、あなたは簡単なコマンドコンソールを作成し、これを行うことができます。$process = new Process('php bin/console yourcommand')$process->run()

私はちょうどそれが役に立てば幸い。

よろしくお願いいたします。

+0

私はRabbitMQソリューションを検討します。ありがとうございました ! –

関連する問題