Swoole數據庫的使用

Swoole在CLI中啓動以後,PHP程序是常駐內存的。

各個框架裏面關於數據訪問層都是在PDO的基礎上做了封裝,爲了減少連接次數,在首次連接數據庫時候會建立PDO對象與數據庫的連接。後續所有SQL都是在這個連接基礎上執行。當腳本執行完,自動釋放連接和PDO對象。

但是Swoole腳本是常駐內存的,所以PDO對象不會被釋放,因此每次執行都會使用已有的連接。

那麼問題來了,當長時間不執行的時候,PDO的連接會超過MYSQL Server的wait_timeout時間而被close掉,因此PDO連接失效,導致程序執行異常。

知道原因解決方法就很容易了:

1、在框架PDO封裝的時候,增加重連,比如執行SQL語句異常被捕獲的時候,可能是連接被重置,所以重新連接PDO,同時計數,第二次再執行異常的時候就不要再重連了,以免死循環

2、swoole每次執行框架的入口的時候作爲一個新的請求處理,都重新初始化pdo。

發佈了20 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章