繁体   English   中英

CodeIgniter多个数据库持久连接?

[英]CodeIgniter Multiple Databases Persistent Connection?

我在我的CodeIgniter应用程序中使用多个数据库,并且已经阅读了很多应该关闭持久连接的数据库。

为什么推荐这个措施,这在最新版本2.0.2中仍然是必要的吗?

我正在做的事情

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

代码点火器文档不解释

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

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

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

为什么建议关闭

这个设置对大多数服务器来说并不理想的原因是,如果你有超过60个用户同时使用你的数据库,或者你的MySQL配置设置为最大连接数,你将很快达到最大连接数,这个可能导致数据库错误或服务器崩溃等

这是默认数据库:$ db ['default'] = array('dsn'=>'','hostname'=>'localhost','username'=>'root','password'=>'',' database'=>'mydatabase','dbdriver'=>'mysqli','dbprefix'=>'','pconnect'=> TRUE,'db_debug'=>(环境!=='生产'),'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'=>(环境!=='生产'),'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(); }>?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM