Не закрывается соединение с базой данных

Q_BASIC

Хранитель порядка
Регистрация
30 Ноя 2013
Сообщения
516
Реакции
1.240
Приветствую,

Скрипт кроном запускается 2 раза в минуту, каждый раз создается соединение в бд.

Временами в логах вижу DB Error: SQLSTATE[08004] [1040] Too many connections

Насколько я понимаю, соединения не закрываются с бд.

Код базы данных:
PHP:
class DBExit
{
    private $db;

    public function __construct(&$db)
    {
        $this->db = &$db;
    }

    public function __destruct()
    {
        $this->db = null;
        echo "\r\n\r\nDB closed";
    }
}

try{
    $db = new PDO("mysql:host=$db_host;dbname=$db_name", $db_login, $db_pass );
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
}
catch(Exception $e)
{
    log_message( 'DB Error: '.$e->getMessage());
    exit;
}

$dbexit = new DBExit($db);

Как можно побороть ошибку?
 
Последнее редактирование:
вместо "exit;"
нужно "die;"
 
Приветствую,

Скрипт кроном запускается 2 раза в минуту, каждый раз создается соединение в бд.

Временами в логах вижу DB Error: SQLSTATE[08004] [1040] Too many connections

Насколько я понимаю, соединения не закрываются с бд.

Код базы данных:
Я бы попробовал так:
PHP:
class DBExit
{
private $db;

public function __construct(&$db)
{
$this->db = &$db;
}

public function __destruct()
{
$this->db = null;
echo "\r\n\r\nDB closed";
}
}

try{
$db = new PDO("mysql:host=$db_host;dbname=$db_name", $db_login, $db_pass );
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
}
catch(Exception $e)
{
log_message( 'DB Error: '.$e->getMessage());
$db = null;
exit;
}

$dbexit = new DBExit($db);

die и exit одно и то же
 
так не сработает.

Если были запросы к БД (а иначе зачем бы всё это?)), то PDO закроет коннекшен ТОЛЬКО если обнулить не только объект db,
но и ОБЯЗАТЕЛЬНО объект, который содержал запрос, что-то типа:

Код:
$this->query = null;
$this->db = null;

см. комментарии к мануалу тут: Для просмотра ссылки Войди или Зарегистрируйся
 
Назад
Сверху