GatewayWorker+thinkphp5.1,操作數(shù)據(jù)庫,使用TP的DB類,Mysql數(shù)據(jù)庫默認(rèn)連接是8小時(shí)。
在TP的命令行下的其他命令,配置斷線重連,始終有效。
config('database.break_reconnect',true);
Db::Connect(config('database.'));
但在GatewayWorker中,大約每隔48小時(shí),數(shù)據(jù)庫就會(huì)連接失敗:
[attach]1226[/attach]
GatewayWorker進(jìn)程中,數(shù)據(jù)庫初始化連接如下:
[attach]1227[/attach]
在重連1次失敗后,再次重連就發(fā)生:“error: 2006 MySQL server has gone away”錯(cuò)誤。
再次強(qiáng)制重連,依然無效:
[attach]1228[/attach]
暫時(shí)的解決辦法就是stop停止GatewayWorker,再重新start -d啟動(dòng)GatewayWorker。
這樣馬上就能連接成功,數(shù)據(jù)立即能更新。
請(qǐng)walkor老大幫忙排查一下原因??靷€(gè)把月了,采取了各種方法,都不行。
我特喵的直接手動(dòng)斷
找到項(xiàng)目目錄thinkphp/library/think/db/Query.php加個(gè)方法
/**
* 手動(dòng)斷線
*/
public function close()
{
$this->connection->close();
}
找到項(xiàng)目目錄thinkphp/library/think/Db.php
頂部注釋中加上 @method Query close() static 手動(dòng)斷線
然后需要的地方最后面用Db::close();