дубликат ответа: How to reconnect in php adodb after exceptions: Mysql server gone away or Lost connection to MySQL server during querymysql_connect не работает второй раз
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
, однако это было бы возмутительно дизайн, если MySQL код РНР намеренно отключает воссоединяется на тайм-аут по умолчанию ... Я буду тестировать независимо и получить обратно.
Я бы не сделал этого так, просто сделайте свой материал и выйдите из сценария. Вы можете использовать cron или планировщик задач для периодической работы вашей работы. – jeroen
У меня есть сценарии, подобные этому, которые нуждаются в гибкости для запуска один раз в секунду, каждые 5 секунд/каждые 5 минут ... часов ... дней ... Я бы или должен был кодировать их по-разному в зависимости от периода в одиночку или код их все равно ... – user3338098