2011-05-06 68 views
2

目前我加载数据库类在我自动加载,它会自动创建一个连接到MySQL。如果没有查询,它仍然会创建一个连接。CodeIgniter - 只有连接到数据库,如果有查询运行

对于性能我只想连接到mysql如果查询已经运行。

什么是最好的方法来实现这一目标?

我正在考虑编写一个模型函数,所有查询都会检测数据库是否已经连接,如果不是在运行$this->db->query()之前调用$this->load->database()

与此问题是,我将不得不改变我的代码中的所有$this->db->query()引用,这是一个痛苦。

理想情况下,我想扩展$this->db->query()函数来支持这一点。

任何想法?

+0

如果有不需要DB查询很多页这只会是有用的。或者如果您使用的是大量缓存 – JohnP 2011-05-06 10:18:32

+1

不确定这里有什么优势,但是当您连接到数据库时,它只在反正使用时才有效。它像自动加载的HTML,网址和其他图书馆。在被要求使用之前,它们不是性能受到打击。 – Brad 2011-05-06 13:39:48

回答

3

您可以通过修改数据库配置

$db['mydb']['autoinit'] = false; 

这将导致你的数据库类不能初始化(其中包括连接到服务器)的autoinit属性实例化时,这反而在第一查询时发生。

the database configuration page