4

没有自动加载数据库,因为我的应用程序的大多数页面都不需要数据库处理,否则整个事情会变慢。我想要做的不是在已经有一个连接的情况下建立与数据库的新连接,而是使用它而不是打扰 server-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)...
} 
4

2 回答 2

9

基本上,如果您保持连接pconnect=falsedatabase.php则连接将在每个脚本执行结束时自动关闭,默认情况下它设置为false.

好吧,如果你愿意,那么你可以使用

$this->db->close();

在每次查询执行后手动关闭连接并使用

$this->db->initialize();

在任何查询执行之前关闭连接后再次初始化连接。

于 2012-07-29T15:09:47.100 回答
3

最好的方法是关闭连接并手动重新连接:

$this->db->close();
$this->db->initialize(); 
于 2012-07-29T14:44:57.057 回答