我正在调用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函数关闭/处理
答案 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?
调用构造函数时建立连接。所以不,您不需要手动打开/关闭与数据库的连接。