diff options
author | Evan Prodromou <evan@controlyourself.ca> | 2009-05-25 22:47:23 -0400 |
---|---|---|
committer | Evan Prodromou <evan@controlyourself.ca> | 2009-05-25 22:47:23 -0400 |
commit | 76aa85fe5ef408cecf7c40c0c56d58ff9ac9fcbb (patch) | |
tree | f2bd52d08e421f934bc8466ab1ecb4facbbcc6a5 /extlib/DB/DataObject.php | |
parent | b140bcdee4b1f4c8f2f34a89a9c5c51e7ecfe826 (diff) | |
parent | 68d90bcab04713d53cf3731d45729a617e68a2fa (diff) |
Merge branch '0.8.x' into stats
Conflicts:
README
Diffstat (limited to 'extlib/DB/DataObject.php')
-rw-r--r-- | extlib/DB/DataObject.php | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/extlib/DB/DataObject.php b/extlib/DB/DataObject.php index b1a1a4e21..0c6a13dc2 100644 --- a/extlib/DB/DataObject.php +++ b/extlib/DB/DataObject.php @@ -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'])) { |