案例:
TP5
$user2 = db('user')->where('id',21)->find();
sleep(10);
$user = db('user')->where('id',20)->find();
由於mysql wait_timeout,interactive_timeout參數設置的10s,程序sleep 10s後,由於框架的db連接都是單例的,所以第二個查詢語句使用的mysql連接和第一次是同一個,但是原先mysql連接等待超過了10s,被mysql強制關閉,導致第二次查詢會出現msyql has gone away;
解決方案:
1調大mysql wait_timeout,interactive_timeout參數;
2每次連接使用新的msyql連接,不用單例模式
$user2 = db('user',[],true)->where('id',21)->find();
sleep(10);
$user = db('user',[],true)->where('id',20)->find();