超级诡异的MySQL server has gone away解决办法

遇到了一个非常变态的mysql错误,可能和他遇到的一样变态,点击查看

无论怎么优化都一直出现这样的mysql错误:MySQL server has gone away
我程序中出现的错误原因可能是,mysql连接超时被关闭了,这可以通过修改my.ini,修改wait_timeout的值,来延长等待时间。(此方法未尝试)
我在程序中加入了如下判断,程序可以执行了。

下载: connect.php
  1. <?php
  2.     if (!$link){
  3.         mysql_close($link);//这里最好先再关闭一次,否则可能会出错
  4.         $link = content();
  5.     }elseif(!mysql_ping($link)){
  6.         mysql_close($link);
  7.         $link = content();
  8.     }
  9. ?>

  1. <?php
  2. function content(){
  3.     return mysql_pconnect('localhost', 'root', 'password');mysql_select_db('d5s');
  4. }
  5. set_time_limit(0);    //避免apache执行脚本超时
  6. $link = content();
  7. $num = 10;        //每次查出XX条
  8. $sum = 1000;    //多少条记录
  9. for ($i=0; $i<=$sum; $i=$i+$num){
  10.     $sql = "SELECT * FROM `tables` WHERE is_get=0 LIMIT ".$num;
  11.     $result = mysql_query($sql);
  12.    
  13.     $arr_row = array();
  14.     while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  15.         $arr_row[] = $row;
  16.     }
  17.     mysql_free_result($result);
  18.     foreach ($arr_row as $row){
  19.         //超耗时代码开始
  20.         /*
  21.             ……
  22.         */
  23.         //超耗时代码结束
  24.         if (!$link){
  25.             mysql_close($link);
  26.             $link = content();
  27.         }elseif(!mysql_ping($link)){
  28.             mysql_close($link);
  29.             $link = content();
  30.         }
  31.         mysql_query("UPDATE `tables` SET is_get = 1 WHERE id = ".$row["id"]);
  32.     }
  33. }
  34. mysql_close($link);
  35. ?>
此条目发表在 数据库 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>