дубликат без ответа: Как восстановить соединение в 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 преднамеренно отключает переподключения по таймауту по умолчанию … Я протестирую в любом случае и вернусь.
mysql_connect
не волнует, отключилось ли соединение или истекло ли оно никогда подключите второй раз, если вы не вызываете его с параметром new_link
со значением true
,
mysql_connect($server,$username,$password,true);
Других решений пока нет …