下面是一个使用singleton的数据库类。我不确定我的checkdbconnection方法。当我得到 MySQL server has gone away
错误,我通过调用 $this->getInstance();
在 checkDBconnnection()
我不停地 MySQL server has gone away
循环中出错。任何帮助都将不胜感激。谢谢
class DB {
private $_mysqli,
$_query,
$_results = [],
$_count = 0;
public static $instance;
public static function getInstance(){
if(!isset(self::$instance)){
self::$instance = new DB();
}
return self::$instance;
}
public function __construct() {
$details = $this->mysqlUrl();
$this->_mysqli = new mysqli($details['host'], $details['user'], $details['pass'], $details['database']);
if ($this->_mysqli->connect_error) {
throw new expection("Connection failed: " . $this->_mysqli->connect_error);
}
}
public function query($query){
$this->checkDBconnnection();
if($this->_query = $this->_mysqli->query($query)){
if ($this->_query->num_rows > 1) {
while($row = $this->_query->fetch_assoc()) {
$data[] = $row;
}
}
if ($this->_query->num_rows <= 1) {
$data[0] = $this->_query->fetch_assoc();
}
return $data;
}
}
public function checkDBconnnection(){
$state = false;
log_message("checkDBconnnection", "Checking mysqli connection", "");
while ($state == false){
if ($this->_mysqli->ping()) {
$state = true;
log_message("checkDBconnnection", "mysqli state", $state);
} else {
sleep(30);
$state = false;
log_message("checkDBconnnection", "mysqli state", $this->_mysqli->error);
log_message("checkDBconnnection", "Reconnecting to database", "");
$this->getInstance();
}
}
}
}
暂无答案!
目前还没有任何答案,快来回答吧!