2014-10-03 1 views
1

У меня проблема в одном из моих заданий cron, иногда я получаю ошибку: MySQL-сервер ушел, а иногда и потерял подключение к MySQL сервер во время запроса. На случайном запросе. Я с помощью ADODB, и подключение к базе данных с помощью функции:Как подключиться в php adodb за исключениями: сервер Mysql ушел или проиграл соединение с сервером MySQL во время запроса

function connectDatabase() 
{ 
    $this->database = NewADOConnection(DSN); 
    $this->database->SetFetchMode(ADODB_FETCH_ASSOC); 
} 

и в хрон работу, я делаю что-то вроде этого:

while($arrRow = $result->fetchRow()){ 
     try { 
      /* 
      Some MySQL query's (~10 query's) 
      */ 
     } catch(Exception $e){ 
      print $e->getMessage(); 
      print "\n"; 
      print $e->getTraceAsString(); 
      $this->connectDatabase(); 
     } 
    } 

В этом цикле я пытаюсь обновить записи один за другим, с простыми вещественными и быстрый запрос. Но в примере вчера я ловлю эту ошибку:

mysql error: [2013: Lost connection to MySQL server during query] in EXECUTE("UPDATE item 
      SET 
       item.price = 10.00, 
       WHERE item.item_id = 145383") 

#0 ../public_html/includes/adodb/adodb.inc.php(879): adodb_throw('mysql', 'EXECUTE', 2013, 'Lost connection...', 'UPDATE item ...', false, Object(ADODB_mysql)) 
#1 ../public_html/includes/adodb/adodb.inc.php(854): ADOConnection->_Execute('UPDATE item ...', false) 
#2 ../public_html/class/Updater.class.php(208): ADOConnection->Execute('UPDATE item ...') 
#3 ../public_html/class/Updater.class.php(74): Updater->updatePrice('145383', Array, 0) 
#4 ../public_html/pricejob.php(14): Updater->start() 

И поймать блок Я хочу, чтобы попытаться подключиться к базе данных, но я получил ту же ошибку:

#5 {main}PHP Fatal error: Uncaught exception 'ADODB_Exception' with message 'mysql error: [2006: MySQL server has gone away] in CONNECT(..., '...', '****', ...) 
' in .../public_html/includes/adodb/adodb-exceptions.inc.php:76 
Stack trace: 
#0 .../public_html/includes/adodb/adodb.inc.php(426): adodb_throw('mysql', 'CONNECT', 2006, 'MySQL server ha...', '...', '...', Object(ADODB_mysql)) 
#1 .../public_html/includes/adodb/adodb.inc.php(3770): ADOConnection->Connect('...', '...', '...', '...') 
#2 .../public_html/includes/adodb/adodb.inc.php(3653): ADONewConnection('mysql://...') 
#3 .../public_html/class/Database.php(64): NewADOConnection('mysql://...') 
#4 .../public_html/class/Updater.class.php(82): Database->connectDatabase() 
#5 .../public_html/pricejob.php(14): Updater->start() 
#6 {main} 
    thrown in .../public_html/includes/adodb/adodb-exceptions.inc.php on line 76 

Я знаю только одно, что я получил это исключение, когда Мне нужно цикл> 25k строк в цикле. Как с этим справиться? как вернуть сервер на эти ошибки?

ответ

0

mysql_connect doesn't work second time

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

mysql_connect($server,$username,$password,true); 
Смежные вопросы