我想在我的控制器中执行一个操作,但是在我将视图呈现给用户之后,这里是我的控制器操作。
public function addAction(Request $request)
{
$this->denyAccessUnlessGranted('ROLE_ADMIN', null, 'Vous n\'avez pas les droits pour accéder à cette page' );
$preconisation = new Preconisation();
$form = $this->createForm(new PreconisationType($preconisation), $preconisation);
if($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$rapport = $em->getRepository('DataBaseBundle:rapport')->findByIdRapport($preconisation->getRapport()->getIdRapport());
$rapport[0]->incPreco($preconisation->getRapport()->getIdRapport());
$em->persist($preconisation);
$em->persist($rapport[0]);
$em->flush();
return $this->redirect($this->generateUrl('data_base_preconisation_index'));
}
}
return $this->render('DataBaseBundle:Preconisation:add.thml.twig', array('form' => $form->createView(),'menu' => 1,
'leftMenu' => 1,));
}
所以
我想在用户收到他的答案后执行这个操作,以避免很长的充电时间。
$rapport = $em->getRepository('DataBaseBundle:rapport')->findByIdRapport($preconisation->getRapport()->getIdRapport());
$rapport[0]->incPreco($preconisation->getRapport()->getIdRapport());
$em->persist($rapport[0]);
我看到我可以使用侦听器和调度员,但我并不真正理解他的结构或它是如何工作的。但是我也看到了带有终止事件的httpKernel。不幸的是我没有答案。我不知道哪一个是最好的。
有什么建议吗?
发布于 2016-04-28 01:09:11
监听器是构造代码的好方法,但它不会加快应用程序的速度。如果要在向用户发送响应后执行代码,则必须使用cron作业或作业调度程序。
我可以推荐使用JMSJobQueueBundle (文档)。简而言之,这就是要做的事情:
$job = new Job('my-symfony2:command', array('some-args', 'or', '--options="foo"'));
发布于 2016-04-28 05:55:25
发送响应/视图后,可以使用javascript和ajax (从视图)调用一个远程php脚本。
发布于 2016-04-28 02:49:34
也许您可以尝试将侦听器添加到事件"kernel.terminate“(只有在处理不改变响应的情况下)。
https://stackoverflow.com/questions/36909813
复制相似问题