dqvtm82066 2015-04-19 16:33 采纳率: 0%
浏览 30
已采纳

在Symfony2中捕获数据库异常

I've got a random problem that I can't narrow down. Occasionally, I will get the following error in a Symfony2 application:

Uncaught Exception: An exception occured in driver: SQLSTATE[08004] [1040] Too many connections {"type":1,"file":"/var/www/symfony/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php","line":115,"level":30709

I would like to setup an application-wide listener to catch the PDOException and log some information. How can I hook into Symfony to only catch PDOException?

  • 写回答

2条回答 默认 最新

  • duanfen2349 2015-04-19 18:46
    关注

    You need to create custom exception listener. It will listen to all exceptions, but you will specify type check inside it.

    In your services.yml you need to specify listener:

    kernel.listener.your_pdo_listener:
            class: Acme\AppBundle\EventListener\YourExceptionListener
            tags:
               - { name: kernel.event_listener, event: kernel.exception, method: onPdoException }
    

    Now you need to create this class:

    YourExceptionListener:

    use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
    class YourExceptionListener
    {
         public function onPdoException(GetResponseForExceptionEvent $event)
         {
              $exception = $event->getException();
    
              if ($exception instanceof PDOException) {
                  //now you can do whatever you want with this exception
              }
         }
    }
    

    Check doc how to create event listener

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题