PHP-CI框架数据库连接默认是长连接,需要注意应用场景
2024-08-23 13:50:56
在CI框架的数据库配置文件中$db['default'] ['pconnect'] = TRUE,永久的数据库连接是指在您的脚本结束运行时不关闭的连接。 当收到一个永久连接的请求时,PHP将检查是否已经存在一个前面已经开启的相同的永久连接,
如果存在,将直接使用这个连接;如果不存在,则建立一个新的连接。 所谓“相同”的连接是指用相同的用户名和密码到相同主机的连接。 适当的选择可以提高性能,但是如果在永久连接中使用数据表锁时,如果无法释放数据表锁,随后使用相同连接的脚本将会被永久阻塞,使得我们必须重启httpd服务或者数据库服务; 在不了解这个机制的时候就很容易导致MySql的数据库连接过多而不能及时释放;
在顺网无线项目中使用了这个机制,当用户访问过多时直接导致数据库too many connects; 当然对数据库压力和web服务器资源消耗最大的数据库应用一个是全表like操作,另外一个就是打开关闭数据库了,其实在一个站点中,无论有多少个人连接到这个站点,读取的数据库,使用的用户名、密码都是同一个。你不是主机提供商,不会为你的网站上的每一个用户单独创建一个数据库吧。只要你的网站在运行,使用长久连接就保证数据库的连接是打开的。这样可以减少服务器的压力。一方面服务器保证了你这个是已经通过登录验证的,不用每次查询用户信息库来验证用户名和密码。另一方面,你的PHP程序也可以直接执行SQL语句,减少了工作量。 因此要合理的使用短连接和长连接; 用的时候分析应用场景和性能压力测试一番。
最新文章
- jQuery中事件绑定到bind、live、delegate、on方法的探究
- sql union和union all的用法及效率
- 利用CAReplicatorLayer实现的加载动画
- maven中运行hibernate5的一些注意事项
- 自己动手写中文分词解析器完整教程,并对出现的问题进行探讨和解决(附完整c#代码和相关dll文件、txt文件下载)
- LCS(打印全路径) POJ 2264 Advanced Fruits
- int *(*a[5])(int, char*)
- thinkphp 视图模型使用分析
- 这样就算会了PHP么?-10
- 如何理解java是一个面向对象的语言?(转自Hollis的直面java)
- MySQL数据库表损坏后的修复方法
- ajax(读取json数据)
- linux命令之 tar
- Ionic Contoller类与Service类分开需要注意的问题
- LINUX-CUDA版本所对应的NVIDIA驱动版本号,cuda版本报错的朋友参考一下
- Python并发编程之线程池/进程池--concurrent.futures模块
- web理论知识--HTML结构及标签
- 【android开发】如何在Linux平台下安装JDK环境
- Ubuntu12.10下Vsftpd的安装
- Python字典使用--词频统计的GUI实现
热门文章
- java中 二进制 八进制 十六进制 十进制 相互转换 最简方法
- ElasticSearch High Level REST API【5】使用模板搜索
- yum仓库及配置
- Net core 轮子
- nuxt.js express模板项目虚拟目录部署问题汇总
- js跨域及解决办法
- UML类图关系模式(C++代码说明)
- Insertion Sort Gym - 101955C 思路+推公式
- django 连接MYSQL时,数据迁移时报:django.db.utils.InternalError: (1366, ";Incorrect string value: '\\xE9\\x97\\xAE\\xE9\\xA2\\x98' for column 'name' at row 5";)
- vue-cli 中引入 jq