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

長(zhǎng)時(shí)間未操作,數(shù)據(jù)庫(kù)連接出錯(cuò)了怎么搞?

akebe

[attach]568[/attach]
還在測(cè)試階段,通常這樣開著前一天測(cè)試還好好的,第二天繼續(xù)連就出現(xiàn)這個(gè)錯(cuò)誤了,要重新打開才可以,錯(cuò)誤的地方排查了是自定義的Sql靜態(tài)類執(zhí)行mysqli_query時(shí)引起的,請(qǐng)問除了用Workerman/MySQL,想這種自定義的sql類,要怎么才能避免這種情況

[attach]570[/attach]

6236 1 0
1個(gè)回答

walkor 打賞

workerman是常駐內(nèi)存的服務(wù),因?yàn)閙ysql鏈接長(zhǎng)時(shí)間不通訊,被mysql服務(wù)端斷開了。
當(dāng)php里再次使用這個(gè)鏈接時(shí)就觸發(fā)了錯(cuò)誤。

以下方法任意一種可以解決:
1、使用workerman提供給的 Workerman/MySQL類 ,里面提供了斷線重連,不會(huì)有這個(gè)問題。
2、每次使用完mysql斷開鏈接,銷毀鏈接。下次使用mysql的時(shí)候重新初始化鏈接。
3、在調(diào)用mysql底層接口時(shí)捕獲下異常或者判斷下錯(cuò)誤碼(pdo_mysql里是2006),根據(jù)異?;蛘咤e(cuò)誤碼判斷鏈接是否已經(jīng)斷開,如果斷開就重新連一次,然后重新執(zhí)行要執(zhí)行的sql
4、設(shè)置mysql的超時(shí)時(shí)間,默認(rèn)貌似是8小時(shí),改成更長(zhǎng)時(shí)間。不過這種方法治標(biāo)不治本,比如mysql重啟,那么鏈接肯定是斷開了的,php再次使用這個(gè)鏈接還會(huì)報(bào)錯(cuò)。
5、使用mysql鏈接的時(shí)候記錄下本次使用鏈接的時(shí)間戳,下次使用的時(shí)候當(dāng)前時(shí)間減去間戳等于鏈接空閑的時(shí)間,如果鏈接空閑的時(shí)間過長(zhǎng),則銷毀鏈接,重新建立一個(gè)mysql鏈接。當(dāng)然這種也是治標(biāo)不治本的方法。
6、搞個(gè)定時(shí)器,定時(shí)發(fā)一個(gè)空查詢給mysql服務(wù)端,類似心跳的功能,可以定時(shí)檢測(cè)mysql鏈接是否存活,不存活就關(guān)閉重連。也是治標(biāo)不治本的方法,不過比方法4方法5 稍微好一些。
7、其它方法可以自己想象

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表回答
??