常驻命令队列mysql连接超时的处理办法

1,常驻命令队列长时间没访问再次有消息消费时,会报错

PDO::prepare(): send of 131 bytes failed with errno=32 Broken pipe

这是因为mysql服务端自动断开socket,mysql的socket timeout超过8小时(默认)会自动断开已建立的tcp连接

但由于是常驻命令,程序认为connection连接还存在,进行mysql操作就会报错。

2,两种解决办法(laravel)

优化BaseModel

 14400) {
                self::getConnection()->reconnect();
            }
        } else {
                self::$lastConnectTime = time();           
        }
    }
}

重写 Illuminate\Database\DetectsLostConnections中的causedByLostConnection方法

Illuminate\Database\Connection中执行m

你可能感兴趣的:(PHP)