我在我的CodeIgniter应用程序中使用了多个数据库,并且已经阅读了很多持久连接应该关闭。
为什么推荐此措施,在最新版本2.0.2中仍然需要这样做?
我正在做像
这样的事情$db2 = $this->load->database("dbname", TRUE);
答案 0 :(得分:1)
代码点火器文档无法解释
不幸的是,2.0.2的Code Igniter文档没有解释为什么要关闭它们。它只是解释说有一个设置可以这样做。这样做的原因很可能是因为它实际上不是Code Igniter功能,而是更多基础PHP / MySQL功能。 PHP有一个关于持久连接的非常好的详细page in their documentation。
来自服务器管理员的说明(我)
基本上,它取决于性能。如果您位于加利福尼亚的少数用户和您的MySQL数据库服务器位于瑞士,则与MySQL服务器建立连接会产生大量开销(与加利福尼亚州同一台服务器上的MySQL连接相比) )。持久连接可以防止每次想要查找MySQL时重新连接的开销。还有许多其他问题可能导致连接开销,例如服务器或数据库的配置方式。 除了性能之外,如果连接不正确地关闭,它也会导致问题,从而导致锁定表。
为什么建议关闭
此设置对大多数服务器来说并不理想的原因是,如果您有超过60个用户同时使用您的数据库,或者您的MySQL配置已设置为最大连接数,您将很快达到{{3这可能会导致数据库错误或服务器崩溃等。
答案 1 :(得分:0)
这是默认数据库:$ db ['default'] = array('dsn'=>'','hostname'=>'localhost','username'=>'root','password'=>' ','database'=>'mydatabase','dbdriver'=>'mysqli','dbprefix'=>'','pconnect'=> TRUE,'db_debug'=>(环境!=='生产'), 'cache_on'=>否,'cachedir'=>'','char_set'=>'utf8','dbcollat'=>'utf8_general_ci','swap_pre'=>``,'encrypt'=>否,'compress '=> FALSE,'stricton'=> FALSE,'failover'=> array(),'save_queries'=> TRUE);在database.php文件的底部添加另一个数据库$ db ['second'] = array('dsn'=>'','hostname'=>'localhost','username'=>'root','password' =>'','数据库'=>'mysecond','dbdriver'=>'mysqli','dbprefix'=>'','pconnect'=> TRUE,'db_debug'=>(环境!=='生产'),'cache_on'=>否,'cachedir'=>``,'char_set'=>'utf8','dbcollat'=>'utf8_general_ci','swap_pre'=>'','encrypt'=>否,'compress'=> FALSE,'stricton'=> FALSE,'failover'=> array(),'save_queries'=> TRUE);在autoload.php配置文件中$ autoload ['libraries'] = array('database','email','session');默认数据库可以通过自动加载数据库库来正常工作,但是可以通过在模型和控制器中使用构造函数来第二次加载数据库并进行连接... db2 = $ this-> load-> database('second',TRUE); }公共函数getsecondUsers(){$ query = $ this-> db2-> get('members');返回$ query-> result(); }}?>