From 132081c0e69f0313ccb0d23637499e940d29f470 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Fri, 26 Sep 2014 11:57:38 -0400
Subject: [PATCH] - added check for mysql error to avoid flood of error messages/mails
---
server/lib/classes/db_mysql.inc.php | 13 +++++++++++++
server/server.php | 2 ++
server/lib/app.inc.php | 18 ++++++++++++++++++
server/cron_daily.php | 2 ++
4 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/server/cron_daily.php b/server/cron_daily.php
index ee54a46..10f1688 100644
--- a/server/cron_daily.php
+++ b/server/cron_daily.php
@@ -32,6 +32,8 @@
require SCRIPT_PATH."/lib/config.inc.php";
require SCRIPT_PATH."/lib/app.inc.php";
+$app->setCaller('cron_daily');
+
set_time_limit(0);
ini_set('error_reporting', E_ALL & ~E_NOTICE);
diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php
index a1e75af..a9d47a5 100755
--- a/server/lib/app.inc.php
+++ b/server/lib/app.inc.php
@@ -35,6 +35,7 @@
var $loaded_modules = array();
var $loaded_plugins = array();
+ var $_calling_script = '';
function __construct() {
@@ -60,6 +61,23 @@
}
+ function setCaller($caller) {
+ $this->_calling_script = $caller;
+ }
+
+ function getCaller() {
+ return $this->_calling_script;
+ }
+
+ function forceErrorExit($errmsg = 'undefined') {
+ global $conf;
+
+ if($this->_calling_script == 'server') {
+ @unlink($conf['temppath'] . $conf['fs_div'] . '.ispconfig_lock');
+ }
+ die('Exiting because of error: ' . $errmsg);
+ }
+
function uses($classes) {
global $conf;
diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php
index d8bfbea..6d42847 100644
--- a/server/lib/classes/db_mysql.inc.php
+++ b/server/lib/classes/db_mysql.inc.php
@@ -130,6 +130,8 @@
}
public function query($queryString) {
+ global $app;
+
if($this->isConnected == false) return false;
$try = 0;
do {
@@ -138,6 +140,17 @@
if(!$ok) {
if(!$this->real_connect($this->dbHost, $this->dbUser, $this->dbPass, $this->dbName)) {
$this->updateError('DB::query -> reconnect');
+ if($this->errorNumber == '111') {
+ // server is not available
+ if($try > 9) {
+ if(isset($app) && isset($app->forceErrorExit)) {
+ $app->forceErrorExit('Database connection failure!');
+ }
+ // if we reach this, the app object is missing or has no exit method, so we continue as normal
+ }
+ sleep(30); // additional seconds, please!
+ }
+
if($try > 9) {
return false;
} else {
diff --git a/server/server.php b/server/server.php
index ab25404..1d2c6d2 100644
--- a/server/server.php
+++ b/server/server.php
@@ -31,6 +31,8 @@
require SCRIPT_PATH."/lib/config.inc.php";
require SCRIPT_PATH."/lib/app.inc.php";
+$app->setCaller('server');
+
set_time_limit(0);
ini_set('error_reporting', E_ALL & ~E_NOTICE);
--
Gitblit v1.9.1