2015-04-15 4 views
1

дубликат ответа: 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 код РНР намеренно отключает воссоединяется на тайм-аут по умолчанию ... Я буду тестировать независимо и получить обратно.

+1

Я бы не сделал этого так, просто сделайте свой материал и выйдите из сценария. Вы можете использовать cron или планировщик задач для периодической работы вашей работы. – jeroen

+0

У меня есть сценарии, подобные этому, которые нуждаются в гибкости для запуска один раз в секунду, каждые 5 секунд/каждые 5 минут ... часов ... дней ... Я бы или должен был кодировать их по-разному в зависимости от периода в одиночку или код их все равно ... – user3338098

ответ

1

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^