]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fil's Patch to DB_DataObject to make it reconnect to the DB if
authorZach Copley <zach@controlyourself.ca>
Thu, 7 May 2009 09:08:49 +0000 (02:08 -0700)
committerZach Copley <zach@controlyourself.ca>
Thu, 7 May 2009 09:08:49 +0000 (02:08 -0700)
there's no connection. This patch has been added upstream and will
be in the next release, but I need it now for the bidirectional
bridge to work.

extlib/DB/DataObject.php

index b1a1a4e2184f77f3bb4d1c0bf22aa45e1b6b9074..0c6a13dc28f7cec5c702d2ad09fb41704bc6b018 100644 (file)
@@ -2357,6 +2357,8 @@ class DB_DataObject extends DB_DataObject_Overload
         $t= explode(' ',microtime());
         $_DB_DATAOBJECT['QUERYENDTIME'] = $time = $t[0]+$t[1];
          
+
+        do {
         
         if ($_DB_driver == 'DB') {
             $result = $DB->query($string);
@@ -2374,8 +2376,19 @@ class DB_DataObject extends DB_DataObject_Overload
                     break;
             }
         }
-        
-       
+
+          // try to reconnect, at most 3 times
+          $again = false;
+          if (is_a($result, 'PEAR_Error')
+          AND $result->getCode() == DB_ERROR_NODBSELECTED
+          AND $cpt++<3) {
+              $DB->disconnect();
+              sleep(1);
+              $DB->connect($DB->dsn);
+              $again = true;
+          }
+          
+        } while ($again);
 
         if (is_a($result,'PEAR_Error')) {
             if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {