jdomenechb/ renew-doctrine-connection
重新建立 Doctrine DBAL 连接,适用于已经关闭或超时的连接。
v1.0
2018-09-09 18:30 UTC
Requires
- doctrine/dbal: ^2.5
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的值是一个很好的选择。