CodeIgniter多数据库持久连接?

7

我在我的CodeIgniter应用程序中使用多个数据库,并且一直在阅读许多内容,其中建议关闭持久连接。

为什么推荐采取这种措施?在最新版本2.0.2中是否仍然需要这样做?

我正在执行类似以下的操作:

$db2 = $this->load->database("dbname", TRUE);

1
请看这个:[CodeIgniter中的pconnect选项][1]: https://dev59.com/HXI-5IYBdhLWcg3wfoW1 - spont4e
这显然是重复的。@spont4e - 发现得好! - Paweł Tomkiel
可以有人关闭这个问题吗?因为它已经得到了回答,尽管可能不是原帖希望的答案。 - David Soussan
我猜测这不被视为重复问题,是因为粗体项之前有答案,但最近被管理员删除了。 - Alex W
2个回答

1

Code Igniter文档没有解释

不幸的是,Code Igniter 2.0.2的文档没有解释为什么应该关闭它们。它只是解释了有一个设置可以这样做。这样做的原因很可能是因为它实际上并不是Code Igniter的功能,而更多的是底层的PHP/MySQL功能。PHP在他们的文档中有一个非常好和详细的页面关于持久连接。

服务器管理员(我)的解释

基本上,这归结于性能。如果您有少量位于加利福尼亚州的用户,而您的MySQL数据库服务器位于瑞士,那么与MySQL服务器建立连接将会产生相当大的开销(与在加利福尼亚州同一台服务器上连接MySQL相比)。拥有持久连接将防止每次想要查找MySQL时重新连接的开销。还有许多其他问题可能导致连接开销,例如服务器或数据库配置的方式。除了性能外,如果连接不正确关闭,还可能导致锁定表等问题。

为什么建议关闭

这个设置并不适合大多数服务器,因为如果您有超过60个用户同时使用数据库(或者根据MySQL配置设置的最大连接数),您很快就会达到最大连接数,这可能会导致数据库错误或服务器崩溃等问题。

0

这是默认数据库:$db ['default'] = array('dsn' =>'','hostname' =>'localhost','username' =>'root','password' =>'','database' =>'mydatabase','dbdriver' =>'mysqli','dbprefix' =>'','pconnect' => TRUE,'db_debug' =>(ENVIRONMENT!== 'production'),'cache_on' => FALSE,'cachedir' =>'','char_set' =>'utf8','dbcollat' =>'utf8_general_ci','swap_pre' =>'','encrypt' => FALSE,'compress' => FALSE,'stricton' => FALSE,'failover' => array(),'save_queries' => TRUE); 在database.php文件底部添加另一个数据库 $db ['second'] = array('dsn' =>'','hostname' =>'localhost','username' =>'root','password' =>'','database' =>'mysecond','dbdriver' =>'mysqli','dbprefix' =>'','pconnect' => TRUE,'db_debug' =>(ENVIRONMENT!== 'production'),'cache_on' => FALSE,'cachedir' =>'','char_set' =>'utf8','dbcollat' =>'utf8_general_ci','swap_pre' =>'','encrypt' => FALSE,'compress' => FALSE,'stricton' => FALSE,'failover' => array(),'save_queries' => TRUE); 在autoload.php配置文件中 $autoload ['libraries'] = array('database','email','session'); 默认数据库通过自动加载数据库库正常工作,但是第二个数据库通过在模型和控制器中使用构造函数进行加载和连接... db2 = $this->load->database('second',TRUE);} public function getsecondUsers(){ $query = $this->db2->get('members'); return $query->result();} }?>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接