视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQLserverhasgoneaway_MySQL
2020-11-09 18:32:51 责编:小采
文档


bitsCN.com

今天遇到一个Mysql的问题:执行update时报错:MySQL server has gone away

由于是Linux后台服务程序,需要7*24运行,但程序在初始化时进行了DB的open操作之后,就进入了for(;;),遇到某个异常导致数据库操作句柄断开,却又没有相应的出错处理,导致程序一直报错。

下面是关于使用mysql_ping函数之后的改进,

这是我的的数据库操作类中间的一个函数
function ping()

{
  if(!mysql_ping($this->link))

   {
    mysql_close($this->link); //注意:一定要先执行数据库关闭,这是关键
    $this->connect($this->t_dbhost,$this->t_dbuser,$this->t_dbpw,$this->t_dbname,$this->t_pconnect);
    }
}


我需要调用这个函数的代码可能是这样子的
for($i=0;$i<10;i++){
$str=file_get_contents(’xxx.xxx,xxx,xxxx’);
}
$db->ping(); //经过前面的网页抓取后,或者会导致数据库连接关闭,检查并重新连接
$db->query(’select * from table’);
ping()这个函数先检测数据连接是否正常,如果被关闭,整个把当前脚本的MYSQL实例关闭,再重新连接。
经过这样处理后,可以非常有效的解决MySQL server has gone away这样的问题,而且不会对系统造成额外的开销。

bitsCN.com

下载本文
显示全文
专题