0
事件侦听器示例对prePersist()
和postPersist()
工作正常,但浏览器超时为preUpdate()
和postUpdate()
。任何人都知道这是为什么发生?对象的preUpdate()事件的事件侦听器的一个非常简单的示例挂起/失败
注意:事件侦听器是导致问题的原因,因为控制器在单独使用时工作正常。我检查了数据库。
错误:
Maximum execution time of 30 seconds exceeded in /var/www/html/local/listener/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php line 685
事件监听
class UserListener
{
//public function postUpdate(LifecycleEventArgs $args)
public function preUpdate(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
if ($entity instanceof User) {
$userLog = new UserLog();
$userLog->setDescription('User Update.');
$em = $args->getEntityManager();
$em->persist($userLog);
$em->flush();
}
}
}
控制器:
public function updateUser()
{
$repo = $this->getDoctrine()->getRepository('SiteFrontBundle:User');
$user = $repo->findOneBy(array('id' => 1));
$user->setLock(true);
$em = $this->getDoctrine()->getManager();
$em->flush();
}
Service.yml
services:
entity.event_listener.user:
class: Site\FrontBundle\EventListener\Entity\UserListener
tags:
- { name: doctrine.event_listener, event: preUpdate }
OnFlush()现在会做。谢谢。 – BentCoder 2014-10-11 20:47:05