今天跑的一个php脚本遇到了一个MySQL server has gone away问题的问题
原因是遍历循环生成excel并打包的时间过长,超过了mysql的 wait-timeout时间,导致mysql断开了链接。
两种方法可以解决:
1.增加你的 wait-timeout值,这个参数是在my.cnf(在Windows下台下面是my.ini)中设置,(这个值的单位是秒,意思是当一个数据库连接在10秒钟内没有任何操作的话,就会强行关闭)
2.检查 MySQL的链接状态,使其重新链接
//数据库操作类中间的一个函数
function ping(){
if(!mysql_ping($this->link)){
mysql_close($this->link); //注意:一定要先执行数据库关闭,这是关键
$this->connect();
}
}
$DB->ping();//导致数据库连接关闭,检查并重新连接
$threeResult = $DB->fetch_arrays($sql);
经过这样处理后,可以非常有效的解决MySQL server has gone away这样的问题,而且不会对系统造成额外的开销
来源:oschina
链接:https://my.oschina.net/u/188211/blog/162441