jdomenechb/renew-doctrine-connection

重新建立 Doctrine DBAL 连接,适用于已经关闭或超时的连接。

v1.0 2018-09-09 18:30 UTC

This package is auto-updated.

Last update: 2024-09-27 01:26:01 UTC


README

这个库简化了在您的应用程序中更新因服务器超时而关闭的现有Doctrine连接的过程。这可能在连接过期或服务器不可用时发生。

当连接丢失时,应用程序通常会抛出一个错误(以MySQL为例)

SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

建议仅在守护程序、消费者、仅PHP服务器或非常长的过程中安装此库,即任何依赖长期PHP进程运行的PHP项目。这不包括在Nginx或Apache等Web服务器中运行的正常PHP应用程序,除非它们依赖于数据库的昂贵算法。否则,您可能会在应用程序中遭受一些不期望的开销。

安装

使用Composer将此库添加到您的项目中

composer require jdomenechb/renew-doctrine-connection

配置

修改您的Doctrine配置,使用此库中包含的TimedRenewConnection作为Doctrine的包装类。例如,在Symfony中,配置将如下所示

doctrine:
    dbal:
        # ...
        wrapper_class: 'Jdomenechb\Doctrine\DBAL\TimedRenewConnection'
        options:
            secondsToRenew: 60

您可以自由自定义secondsToRenew参数。数据库连接将在指定此参数的秒数不活动后更新。如果它设置为0或未设置,则在每个数据库操作之前更新连接。

例如,将此参数分配给MySQL中系统变量wait_timeout的值是一个很好的选择。