【问题标题】:mysql_connect doesn't work second timemysql_connect 第二次不起作用
【发布时间】:2015-06-21 15:58:42
【问题描述】:

未答复的重复: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 代码在默认情况下故意禁用超时重新连接,那将是一个令人发指的设计......我会测试无论如何回来吧。

【问题讨论】:

  • 我不会这样做,只是做你的事情并退出脚本。您可以使用 cron 或任务调度程序定期运行您的作业。
  • 我有类似这样的脚本,需要灵活地每秒运行一次,每 5 秒/每 5 分钟...小时...天...我要么必须以不同的方式对它们进行编码仅取决于时期,或将它们全部编码...

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


【解决方案1】:

mysql_connect 不关心连接是否已断开或超时,除非您使用参数new_link 和值true 调用它,否则它将永远再次连接。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 2014-01-31
    • 2011-10-04
    • 1970-01-01
    • 2020-04-16
    • 2011-11-10
    • 2019-11-25
    相关资源
    最近更新 更多