为了弥合旧系统和CodeIgniter之间的差距,我在CI 2中扩展了CI_Model。这是我的构造函数:
public function __construct ($pkname='', $tablename='')
{
parent::__construct ();
$this->conf['pkname'] = $pkname; //Name of auto-incremented Primary Key
$this->conf['tablename']= $tablename; //Corresponding table in database
$this->DBR = $this->load->database('read', TRUE);
$this->DBW = $this->load->database('write', TRUE);
// echo $this->DBR->conn_id
// echo $this->DBW->conn_id
}
如果我取消注释回显conn_id的两条线,它们每次都不同。不应该重新使用连接信息吗?我认为这意味着我每次都会遇到相同的资源#ID。我两个都有pconnect = TRUE。
Resource id #24
Resource id #25
... snip ...
Resource id #127
Resource id #128
我是开发人员所以这不是一个大问题,但我不想为每个模型单独连接而去生产。感谢。
答案 0 :(得分:0)
此论坛帖子中的db_manager类解决了问题:
http://codeigniter.com/forums/viewthread/157298/
我自动加载db_manager库,然后在扩展CI_Model的My_Model类中使用它
if (!$dbh = $this->db_manager->get_connection($type))
{
// throw exceptions etc
}
$r = mysql_query ($query, $dbh->conn_id);
我现在正在使用mysql_query,因为我正在从另一个系统转换而不想立即重写所有模型。否则你可以使用CI Active类。
运作良好。