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

長時間未操作,數(shù)據(jù)庫連接出錯了怎么搞?

akebe

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

[attach]570[/attach]

6464 1 0
1個回答

walkor 打賞

workerman是常駐內(nèi)存的服務(wù),因為mysql鏈接長時間不通訊,被mysql服務(wù)端斷開了。
當php里再次使用這個鏈接時就觸發(fā)了錯誤。

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

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??