PHP程序在执行批量sql的时候偶尔报错:MySQL server has gone away。主要逻辑就是循环处理20个事务,一个事务大概12个左右的sql,也就是一个流程下来估计有超过240个sql左右,偶尔会报错,我看了超时时间设置:时间是充足的很,可是为什么还是会报错呢?还有就是sql不存在大数据插入,所以不会是数据包超过限制而导致的,网上搜索的大体三种原因:1、长时间闲置导致连接断开,这个排除2、sql语句太长,数据包过大导致,这个排除3、超时时间过短导致,这个排除
想破脑壳都想不到什么原因,测试了整个流程执行时间平均不超过10秒 为啥呢?有木有大神指导一下
我用的是PDO方式连接,其实每次执行sql之前都有判断连接是否断开
可是好像没用
4 回答
![?](http://img1.sycdn.imooc.com/5333a207000118af02200220-100-100.jpg)
宝慕林4294392
TA贡献2021条经验 获得超8个赞
my.ini 文件,修改这三个值,没有添加
max_allowed_packet = 500M
wait_timeout=288000
interactive_timeout = 288000
![?](http://img1.sycdn.imooc.com/545869510001a20b02200220-100-100.jpg)
三国纷争
TA贡献1804条经验 获得超7个赞
使用 mysqli_ping(); 检查连接状态,如果链接断开就重新连接;
$link_status = mysqli_ping($con);
if(false==$link_status)
{
//mysqli_connect
}
不知道这种方法对你是否有用。
试一下先获取程序异常,再获取pdo异常,看是不是程序执行上有什么错误
- 4 回答
- 0 关注
- 928 浏览
添加回答
举报
0/150
提交
取消