被這個(gè)東西 折騰很久了 :
我的查詢代碼 如下:
$sql_r=Db::instance('ms')->select('tableNum,vStyle')->from('msr_info')->where("msrId='$search_mid'")->row();
經(jīng)常出現(xiàn)這個(gè)問(wèn)題 而且 是連接出現(xiàn) 也就是說(shuō) 只要一旦 出現(xiàn)了這個(gè)問(wèn)題 后面再查詢 就還是 報(bào)這個(gè)錯(cuò)誤。
我沒(méi)有寫(xiě)過(guò)任何的腳本來(lái)Kill mysql 線程。
但是 我重啟gatewayWorker start.php 就好了。出現(xiàn)這個(gè)錯(cuò)誤的時(shí)候 web server 也能正常查詢
那么應(yīng)該不是我的mysql 服務(wù)的問(wèn)題吧 。
這個(gè)問(wèn)題 我該怎么解決?
DbConnection類遇到mysql gone away會(huì)自動(dòng)重連一次,如果重連失敗才會(huì)拋異常。
不清楚你這里為何第二次連數(shù)據(jù)庫(kù)會(huì)失敗。
你可以在onMessage回調(diào)后面加一句
Db::closeAll(); 試下。這樣每次處理請(qǐng)求關(guān)閉數(shù)據(jù)庫(kù)鏈接。
你意思是 每次在event 里onMessage 加Db::closeAll();嗎? 那么每次不需要數(shù)據(jù)的 都會(huì)close了。 i/o量很大的情況下 性能會(huì)很影響吧? 那么如果我放在每次需要 Db::instance('ms')->select('tableNum,vStyle')->from('msr_info')->where("msrId='$search_mid'")->row(); 等查詢操作前 做 Db::closeAll(); 再查詢的話 會(huì)不會(huì)好一些呢? 有沒(méi)有別的朋友 碰到我這種情況的? 數(shù)據(jù)庫(kù)操作 是剛需操作啊。。能否有解決方案。。謝謝
你可以計(jì)算下每秒調(diào)用onMessage多少次,
Db::closeAll();相對(duì)于業(yè)務(wù)來(lái)說(shuō),這點(diǎn)開(kāi)銷(xiāo)完全可以忽略。