PHP中MySQL连接管理

php中文网
发布: 2016-06-07 17:19:23
原创
1213人浏览过

需要注意的是:使用mysql_connect()获取共享MySQL连接资源时,调用mysql_close()有时并不能释放MySQL连接,只有当所有共享连接资

对于PHP程序来来说,MySQL是一种稀缺的资源。MySQL默认最大连接数为100,也即是最多接受100个MySQL的客户端连接。因此,PHP在使用MySQL连接时做了一些优化的处理。这些优化,可能对性能有所提升,但对使用MySQL连接的使用却也造成一些困惑。

创建MySQL连接:

resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]] )

当使用mysql_connect()创建一个MySQL连接后,PHP会把这个连接的信息,包括host, username, password与连接资源存储起来。下次调用mysql_connect()时,PHP会默认检查是否存在一个参数相同(参数包括host, username, password)的连接资源,如果存在,则直接返回之前创建的资源,而非新建一个MySQL连接。(PS:当两次调用连接的不是相同服务器时,只能创建新的MySQL连接,旧的连接无法共享)

只有当手动指定new_link为true时,PHP才会避开这个检查,直接重新向PHP服务器发起MySQL连接请求。

这种处理在下面这种情况下就会产生错误:

乾坤圈新媒体矩阵管家
乾坤圈新媒体矩阵管家

新媒体账号、门店矩阵智能管理系统

乾坤圈新媒体矩阵管家 17
查看详情 乾坤圈新媒体矩阵管家

用户期望在database1查询table1的信息,但是由于在第二次mysql_connect(),PHP返回的是上一次的MySQL连接资源。因此,对于$conn2中切换数据库也对$conn1造成了影响,$conn1也同时切换默认到数据库database2,查询的信息会是在database2上面的结果。

解决这个问题的方法就是在第二次调用mysql_connect()时,指定new_link为true即可。

关闭MySQL连接:

对于使用mysql_connect()创建的连接资源,,对资源变量进行unset()并不能真正地释放资源,需要调用mysql_close()才能达到释放MySQL连接资源的效果。

需要注意的是:使用mysql_connect()获取共享MySQL连接资源时,调用mysql_close()有时并不能释放MySQL连接,只有当所有共享连接资源都调用mysql_close()时,PHP才会真正释放MySQL连接。

linux

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号