thinkphp5 mysql断线重连_thinkphp-queue问题解决

在使用ThinkPHP5和thinkphp-queue时遇到MySQL断线重连的问题,表现为SQLSTATE[HY000]: General error: 2006。解决方法是在database.php配置文件中设置'break_reconnect'为true,并指定'break_match_str'。在异常处理中,程序会自动断线重连。此外,介绍了在docker环境中使用supervisor守护队列进程的三种方法,并提到了日志调整以防止大量错误日志生成。
摘要由CSDN通过智能技术生成

使用版本:TP5.1、 thinkphp-queue 2.0

mysql超时断线问题

队列任务运行一段时间,出现:SQLSTATE[HY000]: General error: 2006 MySQL server has gone away报错。

解决方法和分析:

配置文件database.php中配置断线重连:

// 是否需要断线重连

'break_reconnect' => true,

// 断线标识字符串

'break_match_str' => ['2006'],

配置后虽然日志中会出现另一个报错:PDO::prepare(): send of 60 bytes failed with errno=32 Broken pipe,但并不影响程序运行结果。因为断线重连后,程序都会抛出错误:

.

.

.

} catch (\PDOException $e) {

if ($this->isBreak($e)) {

return $this->close()->query($sql, $bind, $master, $pdo);

}

throw new PDOException($e, $this->config, $this->getLastsql());

} catch (\Throwable $e) {

if ($this->isBreak($e)) {

return $this->cl

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值