【问题标题】:Codeigniter $this->db->reconnect(); usageCodeigniter $this->db->reconnect();用法
【发布时间】:2023-03-27 07:29:01
【问题描述】:

自动加载数据库,因为我的应用程序的大多数页面不需要需要数据库处理,否则整个事情会变慢。我想要做的不是在已经有一个连接的情况下建立与数据库的新连接,而是使用它而不是打扰 server-db。那么如何在下面的示例中实现$this->db->reconnect();?我阅读了用户指南,但没有确切的例子。

注意:如果我需要使用$this->db->close();$this->db->initialize();,那么请帮助我实现它们,因为我听说在禁用自动加载的情况下调用$this->db->reconnect(); 会引发错误。 p>

我正在使用 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)...
} 

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    基本上,如果您将pconnect=false 保留在database.php 中,则连接将在每个脚本执行结束时自动关闭,默认设置为false

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

    $this->db->close();
    

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

    $this->db->initialize();
    

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

    【讨论】:

    • 当我在构造函数中使用$this->load->database(); 连接到数据库时,使用$this->db->initialize(); 有什么意义?我的意思是,它有什么特别之处?的优点和缺点?我在网上找不到任何关于它的信息。
    • 如果您使用autoinit=falsepconnect=false 以及在使用$this->db->close(); 时。
    • 明白了,所以没有必要使用 close() 和 initialize() 因为 pconnect 在我的情况下默认设置为 false。谢谢
    【解决方案2】:

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

    $this->db->close();
    $this->db->initialize(); 
    

    【讨论】:

    • 我在上面的示例中将这 4 行放在哪里?
    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 2013-04-03
    • 2014-10-17
    相关资源
    最近更新 更多