mysql_connect 第二次无效

mysql_connect doesn't work second time

重复未回答: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 会持续 returns "MySQL server has gone away",这会导致可能持续数天的无限循环。是否有其他方法可以清除 mysql_error 的错误响应或再次使 mysql_connect 运行 无需手动重新启动此程序或求助于 cron.

我刚刚注意到 mysql_connect 有一个奇怪的(愚蠢的?)参数叫做 new_link,但是如果 php 的 mysql 代码,那将是一个离谱的设计默认情况下有意禁用超时重新连接...无论如何我都会测试并返回。

mysql_connect 不关心连接是否断开或超时,它将 永远不会 第二次连接,除非您使用参数 [=12] 调用它=] 的值为 true.

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