2014-10-03 2 views
1

내 cron 작업 중 하나에서 문제가 발생합니다. 때때로 다음과 같은 오류가 발생합니다. MySQL 서버가 사라 졌거나 때때로 MySQL 연결이 끊어졌습니다 서버. 무작위 쿼리. 내가 진짜 간단한과, 기록 하나 하나를 업데이트하려고이 루프에서예외 후 PHP adodb에서 재 연결하는 방법 : MySQL 서버가 사라 졌거나 쿼리 중에 MySQL 서버에 연결이 끊어졌습니다.

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(); 
     } 
    } 

: 나는 ADODB를 사용하고 기능을 데이터베이스에 연결 : 나는 그런 일을

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

및 크론 작업에 및 빠른 쿼리. 그러나 나는이 오류를 잡을 어제 예제 :

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() 

그리고 catch 블록에서 나는 데이터베이스에 다시 연결 해보고 싶어하지만 난 같은 오류가있어 : 나는 경우이 예외를 가지고 하나를 알고

#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 행 순환해야합니다. 나를 어떻게 처리할까요? 그 오류로 서버를 되 찾는 방법은? 연결이 끊어거나 당신이 값 true와 매개 변수 new_link으로 호출하지 않는 한 타임 아웃이 결코이 2 번에 연결한다면

답변