mysql_connect第二次不起作用

时间:2015-04-15 15:33:26

标签: php mysql mysql-connect mysql-error-1005

未答复的副本:How to reconnect in php adodb after exceptions: Mysql server gone away or Lost connection to MySQL server during query

mysql_connect第一次工作,但在此之后永远不会工作......

$connectDb = mysql_connect(secret, secret, secret);
mysql_select_db("secret", $connectDb);

$sleepPeriod = 1800;
sleep($sleepPeriod);
while (true) {
  $result = mysql_query("good query", $connectDb);
  if (!$result) {
    if (mysql_error()=='MySQL server has gone away') {
      echo "MySql connection was disconnected... reconecting...\n";
      $connectDb = mysql_connect(secret, secret, secret);
      mysql_select_db("secret", $connectDb);
      continue;
    } else {
      die("Invalid Query: ".__FILE__.':'.__LINE__.' '.mysql_error()."\n");
    }
  }
  //DO STUFF
  sleep($sleepPeriod);
}

如果发生超时或断开连接mysql_connect似乎失败并且mysql_error不断返回"MySQL server has gone away",这会导致无限循环,可能持续数天。是否有其他方法可以清除mysql_error的错误响应或使mysql_connect第二次运行而无需手动重新启动此程序或使用cron。

我刚注意到mysql_connect有一个名为new_link的奇怪(愚蠢?)参数,但如果php的mysql代码默认情况下故意禁用重新连接,那么这将是一个令人发指的设计。我不管怎样进行测试,然后再回来。

1 个答案:

答案 0 :(得分:2)

mysql_connect并不关心连接是否已断开连接或超时,从不连接第二次,除非您使用带有值的参数new_link调用它true

mysql_connect($server,$username,$password,true);