добрый день никогда не сталкивался с такой проблемой, сейчас время выполнения скрипта очень большое из-за этого бд в некоторых случаях обрывает соединение, скажите как сделать проверку есть ли соединение или нет что бы делать запрос только с открытым соединением использую вот этот класс
class sql{
private static $instance;
private $db;
public static function app() {
if (self::$instance == null) {
self::$instance = new self();
}
return self::$instance;
}
private function __construct() {
setlocale(LC_ALL, 'ru_RU.UTF8');
$this->db = new \PDO('mysql:host=' . MYSQL_SERVER . ';dbname=' . MYSQL_DB, MYSQL_USER, MYSQL_PASSWORD);
$this->db->exec('SET NAMES UTF8');
$this->db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
}
public function select($query, $params = array()) {
$q = $this->db->prepare($query);
$q->execute($params);
if ($q->errorCode() != \PDO::ERR_NONE) {
$info = $q->errorInfo();
die($info[2]);
}
return $q->fetchAll();
}
public function getByHash($table, $hash_key, $hash_value, $real_key, $real_value){
$q = $this->db->prepare("SELECT * FROM $table WHERE $hash_key=:$hash_key");
$q->execute(array($hash_key => $hash_value));
if ($q->errorCode() != \PDO::ERR_NONE) {
$info = $q->errorInfo();
die($info[2]);
}
while($row = $q->fetch()){
if($row[$real_key] == $real_value)
return $row;
}
return null;
}
public function insert($table, $object, $last=null) {
$columns = array();
foreach ($object as $key => $value) {
$columns[] = $key;
$masks[] = $value;
if ($value === null) {
$object[$key] = 'NULL';
}
}
$columns_s = implode(',', $columns);
$masks_s = "'".implode('\',\'', $masks)."'";
$query = "INSERT INTO $table ($columns_s) VALUES ($masks_s)";
$q = $this->db->prepare($query);
$q->execute($object);
if ($q->errorCode() != \PDO::ERR_NONE) {
$info = $q->errorInfo();
die($info[2]);
}
if($last == true ) {
return $this->lastInsertId();
}
else{
return null ;
}
}
public function lastInsertId(){
$resalt = $this->select("SELECT LAST_INSERT_ID()");
if(isset($resalt[0]['LAST_INSERT_ID()'])){
$resalt = $resalt[0]['LAST_INSERT_ID()'];
}
return $resalt;
}
public function insertMany($table, $object,$last = null,$count=null) {
$columns = array();
$masks2 = array();
$i=1;
foreach ($object as $value) {
$masks = array();
foreach ($value as $key=>$val) {
$masks[] = $val;
if($i==1) {
$columns[] = $key;
}
if ($value === null) {
$object[$key] = 'NULL';
}
}
$masks = implode("','", $masks);
$masks2[]= "('".$masks."')";
$i++;
}
$columns_s = implode('`,`', $columns);
$masks_s = implode(',', $masks2);
$query = "INSERT IGNORE INTO `$table` (`$columns_s`) VALUES $masks_s";
$this->select($query);
return $this->lastOrCount($last,$count,$i-1);
}
public function lastOrCount ($last=null,$count=null,$i=null){
if ($count == true and $last == true ){
return $array = array($this->lastInsertId(),$i);
} else if($last == true){
return $this->lastInsertId();
}
if($count == true ) {
return $i;
}
else{
return null ;
}
}
public function update($table, $object, $where, $params = array()) {
$sets = array();
foreach ($object as $key => $value) {
$sets[] = "$key=:$key";
if ($value === NULL) {
$object[$key] = 'NULL';
}
}
$sets_s = implode(',', $sets);
$query = "UPDATE $table SET $sets_s WHERE $where";
$q = $this->db->prepare($query);
$q->execute(array_merge($object, $params));
if ($q->errorCode() != \PDO::ERR_NONE) {
$info = $q->errorInfo();
die($info[2]);
}
return $q->rowCount();
}
public function delete($table, $where, $params = array()) {
$query = "DELETE FROM $table WHERE $where";
$q = $this->db->prepare($query);
$q->execute($params);
if ($q->errorCode() != \PDO::ERR_NONE) {
$info = $q->errorInfo();
die($info[2]);
}
return $q->rowCount();
}
}
Спасибо