我需要在prestashop中关闭数据库会话

时间:2016-11-06 12:03:39

标签: php mysql prestashop prestashop-1.6 prestashop-1.7

我正在调用Db :: getInstance() - > execute()进行插入和更新 和选择查询Db :: getInstance() - > executeS() 在此之后,我们需要关闭数据库连接或prestashop本身关闭/处理数据库连接。

我们如何在prestahsop中检查连接是否长时间打开我们的数据库? 我们的服务器管理员说我们的数据库会话正在增加,因为我们没有关闭连接。

任何专家prestahsop你能解释PrestaShop如何关闭连接,还是我们需要手动关闭它?

 Db::getInstance()->execute()

对于我们创建的某些cronjob文件,我们要做的是包含配置文件,如下所示:       require'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'];
       }

这会让我的数据库连接永远打开吗?或者它将被prestashop中的getInstance函数关闭/处理

2 个答案:

答案 0 :(得分:2)

您不应该关闭数据库连接,PrestaShop会自动处理。您也可以通过调用以下代码手动断开连接:

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

如果您的商店出现性能问题,那么您可以启用PrestaShop Code Profiler并查看哪些Object实例正在使用您的服务器内存。

要启用PrestaShop Code Profiler,您需要按照以下步骤操作:

  • 在您的服务器上,编辑文件/config/defines.inc.php。

  • 找到这一行(第43行):define(&#39; _PS_DEBUG_PROFILING _&#39;,
    假);

  • 在此行中,更改&#34; false&#34; to&#34; true&#34;。

  • 保存更改。

答案 1 :(得分:1)

查看Db班级......

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

调用析构函数时,将关闭与数据库的连接。

Can I trust PHP __destruct() method to be called?

调用构造函数时建立连接。所以不,您不需要手动打开/关闭与数据库的连接。