用户
 找回密码
 入住 CI 中国社区
搜索
查看: 10092|回复: 8
收起左侧

[讨论/交流] CI的数据库连接默认为长连接,有什么好处?

[复制链接]
发表于 2010-6-24 11:36:28 | 显示全部楼层 |阅读模式
本帖最后由 visvoy 于 2010-6-24 14:33 编辑

不理解CI的数据库连接默认为长连接?
http://codeigniter.org.cn/forums/thread-2842-1-1.html
在CI的数据库配置文件中默认的一项 数据库连接是长连接$db['default'] ['pconnect'] = TRUE;,不知有什么好处?
查看资料说,永久的数据库连接是指在您的脚本结束运行时不关闭的连接。当收到一个永久连接的请求时。 PHP 将检查是否已经存在一个(前面已经开启的)相同的永久连接。如果存在,将直接使用这个连接;如果不存在,则建立一个新的连接。所谓“相同”的连接是指用相同的用户名和密码到相同主机的连接。如在永久连接中使用数据表锁时,如果脚本不管什么原因无法释放该数据表锁,其随后使用相同连接的脚本将会被永久的阻塞,使得您需要重新启动 httpd 服务或者数据库服务。
这样很容易导致MYSQL的数据库连接过多而不能及时释放掉

评分

参与人数 1威望 -2 收起 理由
Hex -2 帖子主题不符合发帖标准

查看全部评分

发表于 2010-6-24 12:13:21 | 显示全部楼层
P 链接到底是有好处还是有坏处,要看具体应用和服务器环境。
如果 P 链接一无是处,为什么 PHP 还要有 mysql_pconnect 函数呢?这就说明其在某些场合是会提高性能的。
发表于 2010-6-24 12:27:40 | 显示全部楼层
其实在一个站点中,无论有多少个人连接到这个站点,读取的数据库,使用的用户名、密码都是同一个。你不是主机提供商,不会为你的网站上的每一个用户单独创建一个数据库吧。只要你的网站在运行,使用长久连接就保证数据库的连接是打开的。这样可以减少服务器的压力。一方面服务器保证了你这个是已经通过登录验证的,不用每次查询用户信息库来验证用户名和密码。另一方面,你的PHP程序也可以直接执行SQL语句,减少了工作量
发表于 2010-6-24 14:32:13 | 显示全部楼层
路过,答案已有
发表于 2010-6-24 16:42:04 | 显示全部楼层
对数据库压力和web服务器资源消耗最大的数据库应用,一个是全表like操作,另外一个就是打开关闭数据库了。
发表于 2010-6-24 18:51:30 | 显示全部楼层
这个问题似乎已经讨论过了,看这个问题
http://codeigniter.org.cn/forums ... 77&fromuid=2748
 楼主| 发表于 2010-6-24 20:07:13 | 显示全部楼层
看了很多方面对pconnect的回答 貌似 都是批判他的不足
感觉CI根本没必要 用pconnect作为默认连接
发表于 2010-6-30 15:01:38 | 显示全部楼层
曾经在一个应用中使用pconnect  后来直接导致too many connects
max_connect应该是是200+
timeout大概是1000秒
发表于 2013-8-20 12:18:54 | 显示全部楼层
bottom 发表于 2010-6-24 12:27
其实在一个站点中,无论有多少个人连接到这个站点,读取的数据库,使用的用户名、密码都是同一个。你不是主 ...

这几天, VPS 因 too many connections 多次无法使用数据库. 关掉CI的pconnection选项然后重启了mysql, 用"show processlist;" 查看, 没那么多记录了.

本版积分规则