mysql_connect()和mysql_pconnect()区别
0个回复fCysPHP笔记2010-01-01 17:52:56
mysql_connect()是我们常用的打开Mysql数据库连接的函数.
-
mysql_connect(server,user,pwd)
这个函数打开的是非持久的 MySQL 连接. 当脚本一结束, 到服务器的连接就被关闭. 如果想提前关闭连接可以使用mysql_close().
而mysql_pconnect()是打开一个到 MySQL 服务器的持久连接的方法.
-
mysql_pconnect(server,user,pwd)
mysql_pconnect()与mysql_connect()的主要区别在于当连接的时候mysql_pconnect()函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接, 如果找到, 则返回此连接标识而不打开新连接.
其次, 当脚本执行完毕后到 SQL 服务器的连接不会被关闭, 此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接).
其实在CGI方式下 这两种连接并没有什么区别, 在CGI模式下每个PHP访问都为一个进程, 访问结束后进程也就结束了, 所有的资源也都被施放了.
但php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用. 所以在apache并发访问量不大的时候, 由于使用了mysql_pconnect(), php节省了反复连接db的时间, 使得访问速度加快.
但是当并发数很大时就容易产生mysql_pconnect()还在处理任务时, 新的请求来到, 于是又建立一个持续连接.由于这个连接并不会在程序结束时关闭.所以会一直存在.当某一时刻并发数超过Mysql连接上限时就会产生很多访问变为连接超时.
所以如何选用在于最后程序部署的环境以及网站的并发量.所以Discuz有个选项就是让站长们自己来衡量自己的网站再来选取数据库连接的方式.
Leave a Reply