From ebd0e986ed11f2a34fb58cdd33efbfab192083ad Mon Sep 17 00:00:00 2001 From: Till Brehm <tbrehm@ispconfig.org> Date: Fri, 22 Apr 2016 05:26:17 -0400 Subject: [PATCH] Added PHP 7 check in installer and updater. --- server/lib/classes/db_mysql.inc.php | 23 ++++++++++++++++++----- 1 files changed, 18 insertions(+), 5 deletions(-) diff --git a/server/lib/classes/db_mysql.inc.php b/server/lib/classes/db_mysql.inc.php index f5ce39c..6d42847 100644 --- a/server/lib/classes/db_mysql.inc.php +++ b/server/lib/classes/db_mysql.inc.php @@ -101,8 +101,8 @@ } */ if(mysqli_connect_error()) { - $this->errorNumber = mysqli_connect_errno(); - $this->errorMessage = mysqli_connect_error(); + $this->errorNumber = $this->connect_errno; + $this->errorMessage = $this->connect_error; } else { $this->errorNumber = mysqli_errno($this); $this->errorMessage = mysqli_error($this); @@ -130,6 +130,8 @@ } public function query($queryString) { + global $app; + if($this->isConnected == false) return false; $try = 0; do { @@ -137,8 +139,19 @@ $ok = $this->ping(); 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) { - $this->updateError('DB::query -> reconnect'); return false; } else { sleep(($try > 7 ? 5 : 1)); @@ -150,7 +163,7 @@ } } while($ok == false); $this->queryId = parent::query($queryString); - $this->updateError('DB::query('.$queryString.') -> mysqli_query'); + if(!$this->queryId) $this->updateError('DB::query('.$queryString.') -> mysqli_query'); if(!$this->queryId) { return false; } @@ -184,9 +197,9 @@ // returns the next record in an array public function nextRecord() { $this->record = $this->queryId->fetch_assoc(); - $this->updateError('DB::nextRecord()-> mysql_fetch_array'); if(!$this->record || !is_array($this->record)) { + $this->updateError('DB::nextRecord()-> mysql_fetch_array'); return false; } $this->currentRow++; -- Gitblit v1.9.1