/**
* mysql心跳。定時發(fā)送一個查詢,防止mysql連接長時間不活躍被mysql服務(wù)端斷開。
* 默認(rèn)不開啟,如需開啟請到 config/bootstrap.php中添加 support\bootstrap\db\Heartbeat::class,
* @package support\bootstrap\db
*/
class Heartbeat implements Bootstrap
{
/**
* @param \Workerman\Worker $worker
*
* @return void
*/
public static function start($worker)
{
\Workerman\Timer::add(55, function (){
Db::select('select 1 limit 1');
});
}
}
假設(shè)我的database.php 上有幾個鏈接,該心跳只是維持作用default配置的心跳。其他庫的心跳是沒有維持?
我用的是 ThinkOrm,
其實(shí)你去看 start.php源碼,
webman框架默認(rèn)啟動
1:webserver
2:monitor
每一個worker,都會啟動一遍bootstrap.php內(nèi)的注冊,
所以 public static function start($worker) 會被執(zhí)行2次,也就是說有兩個定時器會啟動,
\Workerman\Timer::add(30, function (){
//我這個是Tp-Orm的查詢方式,這里你用什么驅(qū)動,就用什么查詢,
\think\facade\Db::query('select 1 limit 1 ');
});
在這里
上傳下,分享下吧,
我記得流年以前和我說過,可以這樣手動 連接/關(guān)閉數(shù)據(jù)庫 句柄,不需要修改tp-orm,手冊上沒有放上去而已
Db::connect(Config::pull('database'),true);
Db::getConnection()->close();
close()方法 對應(yīng)執(zhí)行 this->pdo=null 然后php會自動發(fā)送tcp close然后釋放句柄