我不自动加载数据库因为我的应用程序的大多数页面不需要数据库处理,否则整个事情会变慢。我想要做的是当有一个已经存在并且使用它而不是打扰服务器db时,不建立与db的新连接。那么如何在下面的示例中实现$this->db->reconnect();
?我阅读了用户指南,但没有确切的例子。
注意:如果我需要使用$this->db->close();
和$this->db->initialize();
,请帮助我实施它们,因为我听说调用$this->db->reconnect();
并禁用自动加载功能抛出错误。
我正在使用CI 2.1
由于
class Test_model extends CI_Model
{
public function __construct()
{
parent::__construct();
$this->load->database();
}
public function function_a($id)
{
$this->db->protect_identifiers('year');
$sql = "SELECT * FROM year WHERE id = ?";
$data['dbquery'] = $this->db->query($sql, array($id));
return $data['dbquery'];
}
public function function_b($id)
{
$this->db->protect_identifiers('month');
$sql = "SELECT * FROM month WHERE id = ?";
$data['dbquery'] = $this->db->query($sql, array($id));
return $data['dbquery'];
}
public function function_c($id)...
public function function_d($id)...
public function function_e($id)...
}
答案 0 :(得分:9)
基本上,如果您将pconnect=false
保留在database.php
中,则会在每个脚本执行结束时自动关闭连接,默认设置为false
。
如果你愿意,那么你可以使用
$this->db->close();
每次执行查询后手动关闭连接并使用
$this->db->initialize();
在任何查询执行之前,在关闭它之后再次初始化连接。
答案 1 :(得分:3)
最好的方法是关闭连接并手动重新连接:
$this->db->close();
$this->db->initialize();