国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于Mysql心跳【webman】

czf
/**
 * 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配置的心跳。其他庫的心跳是沒有維持?

4090 4 0
4個回答

admin

我用的是 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 ');
});

在這里

截圖

  • czf 2021-08-07

    這個我知道,假設(shè)我database.php連接了2個mysql的庫,是不是需要在心跳那里維持2個連接。

  • admin 2021-08-07

    @7932:是的,不然就會 mysql has gone away

鋼絲擦

我已經(jīng)改了底層代碼,model層改用了tp-orm,不用做心跳,用完自動釋放連接,避免并發(fā)大直接拖垮數(shù)據(jù)庫,不用維持大量連接和資源,路由支持二級控制

  • 開賽靈 2021-08-21

    沒啥必要吧。。

  • 鋼絲擦 2021-08-23

    @8211:對的,對個人需要而言,你也可以做心跳,長鏈接效率高,也可以自己手動釋放,也可以不做心跳,強(qiáng)制重連,不過路由二級以上很有必要

admin

上傳下,分享下吧,

我記得流年以前和我說過,可以這樣手動 連接/關(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然后釋放句柄
  • 鋼絲擦 2021-08-09

    可以啊,等我多測試幾回看看有沒有其它問題

  • admin 2021-08-11

    @8192:3天過去了,請回復(fù)下,有沒有問題,這是 tp作者 流年親自回復(fù)我的方法

  • 鋼絲擦 2021-08-12

    @8189:我測試了沒有問題啊,不過不是用你的方法

鋼絲擦

已經(jīng)上傳

  • admin 2021-08-11

    我靠,最后修改00:36,這么肝嗎

  • 鋼絲擦 2021-08-12

    @8189:@8189:(? ?_?)?哈哈,你有沒有發(fā)現(xiàn)有問題呢?

年代過于久遠(yuǎn),無法發(fā)表回答
??