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