案例:
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();