Мне нужно закрыть сессию БД в prestashop

Я звоню Db :: getInstance () -> execute () для вставки и обновления
и для запроса выбора Db :: getInstance () -> executeS ()
После этого нам нужно закрыть соединение с базой данных или сам prestashop закрывает / обрабатывает соединение с базой данных.

Как мы будем проверять, открыто ли соединение с нашей базой данных в prestahsop в течение длительного времени?
Администратор нашего сервера говорит, что количество сеансов в нашей базе данных увеличивается, поскольку мы не закрываем соединение.

Любой эксперт prestahsop, можете ли вы объяснить, как PrestaShop закрывает соединение, или нам нужно закрыть его вручную?

 Db::getInstance()->execute()

Для определенных файлов cronjob, которые мы создали, мы включаем файл конфигурации, как показано ниже:
требуют ‘config / config.inc.php’;

    $db = Db::getInstance();
$result = $db->executeS($get_promotions_sql, false);
while ($row = $db->nextRow($result)) {
$id_product=$row['id_product'];
$name="<br>".$row['name'];
}

это делает мое соединение с базой данных открытым навсегда? или он будет закрыт / или обработан функцией getInstance в prestashop

2

Решение

Вы не должны закрывать соединение с БД, PrestaShop будет обрабатывать это автоматически. Вы также можете отключить соединение вручную, вызвав следующий код:

Db::getInstance()->disconnect();

Если у вас есть проблема с производительностью в вашем магазине, вы можете включить PrestaShop Code Profiler и посмотреть, какие экземпляры объектов используют память вашего сервера.

Чтобы включить PrestaShop Code Profiler, вам необходимо выполнить следующие шаги:

  • На вашем сервере отредактируйте файл /config/defines.inc.php.

  • Найдите эту строку (около строки 43): определите (‘_ PS_DEBUG_PROFILING_’,
    ложный);

  • В этой строке измените «ложь» на «истина».

  • Сохраните ваши изменения.

2

Другие решения

Глядя на Db учебный класс…

/**
* Close connection to database
*/
public function __destruct()
{
if ($this->link)
$this->disconnect();
}

Соединение с базой данных будет закрыто при вызове деструктора.

Могу ли я доверять вызываемому методу PHP __destruct ()?

Соединение устанавливается при вызове конструктора. Так что нет, вам не нужно вручную открывать / закрывать соединение с базой данных.

1

По вопросам рекламы [email protected]