$db = Db::getInstance(); 创建数据库实例后,prestashop 1.6.1.3 中的数据库连接何时关闭?
我是否需要通过编写任何代码 db close 函数来手动关闭数据库连接?或者 prestashop 中的 db 类会处理这个?实际上,在 $db = Db::getInstance(); 创建 db 对象后,PrestaShop db 连接何时会关闭?
请参阅下面的代码,这是我的 prestashop 根目录中的一个简单 php 文件,用于更新我的一个表,该页面每分钟被 cron 作业任务调用一次,这里我没有在任何地方关闭连接,我们需要关闭它吗?
$CheckStatusSql = "select * from ticket_status where item_id='$ItemID' and ticket_series='$TicketSeries' and status='BOOKED' ";
$db = Db::getInstance();
$result = $db->executeS($CheckStatusSql, false);
$ChangeStatus ='';
while ($row = $db->nextRow($result)) {
$status = $row['status'];
$booked_on = $row['booked_on'];
$ticket_no = $row['ticket_no'];
$to_time = strtotime(date("Y-m-d H:i:s"));// Time Now
$from_time = strtotime($booked_on); //Booked Time
$time_diff_minutes=round(abs($to_time - $from_time) / 60,2);
if($time_diff_minutes>$checkMinutes){
$ChangeStatus=$ChangeStatus."Booked ticket no: '".$ticket_no."' exceeds 30 Minutes and its now about ".$time_diff_minutes." minutes, status changed to AVAILABLE<br><br\>";
$updateSql = "UPDATE ticket_status SET status = 'AVAILABLE', booked_on = NULL WHERE item_id='$ItemID' and ticket_series='$TicketSeries' and status='BOOKED' and ticket_no='$ticket_no'";
$bookResult = $db->executeS($updateSql, false);
}
}
那就是我只包括配置文件(需要'config/config.inc.php';)并创建一个数据库对象,然后执行我的查询,如下所示:
require 'config/config.inc.php';
$checkMinutes = 30;// In minutes
$checkTimeInSeconds = $checkMinutes*60;
$sql = 'SELECT * FROM ps_ticket WHERE status=5';
$db = Db::getInstance();
$result = $db->executeS($sql, false);
$i=1;
while ($row = $db->nextRow($result)) {
$time = strtotime($row['hold_on']);
$curtime = time();
if(($curtime-$time) > $checkTimeInSeconds) { ///3600 seconds
$sql = 'UPDATE `'._DB_PREFIX_.'lopp_ticket`
SET
`id_customer` = 0,
`hold_on`=0,
`status` = 1
WHERE `ticket_id` = '.$row['ticket_id'];
if(Db::getInstance()->execute($sql)) {
echo $row['ticket_id'].' Updated'.'<br>';
}
}
else {
echo $row['ticket_no'].'No'.'<br>';
}
$i++;
}
所以在这里我需要在上面的代码中的任何地方关闭数据库连接,否则 PrestaShop 会自行处理?
因为服务器管理员说我们的代码打开了太多的数据库会话,所以还有没有办法检查太多的数据库会话总是从哪里打开/活动?