mysql_connect не работает во второй раз

Дубликат неотвеченных: Как восстановить соединение в php adodb после исключений: сервер MySQL отключился или потерял соединение с сервером MySQL во время запроса

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 ответ

Решение

mysql_connect не заботится, было ли соединение разорвано или истекло время ожидания, оно никогда не соединится во второй раз, если вы не вызовете его с параметром new_link со значением true,

mysql_connect($server,$username,$password,true);
Другие вопросы по тегам