`
mujizi
  • 浏览: 139070 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

mysql_connect和mysql_pconnect区别

 
阅读更多

apache模块方式下: 
区别在于当php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用. 

这就使得在apache并发访问量不大的时候, 由于使用了pconnect, php节省了反复连接db的时间, 使得访问速度加快. 这应该是比较好理解的. 

但是在apache并发访问量大的时候, 如果使用pconnect, 会由于之前的一些httpd进程占用的mysql连接没有close, 则可能会因为mysql已经达到最大连接着, 使得之后的一些请求永远得不到满足. 

例如: 
若mysql最大连接数设为500, 而apache的最大同时访问数设为2000 
假设所有访问都会要求访问db, 而且操作时间会比较长 

当前500个请求的httpd都没有结束的时候...之后的httd进程都是无法连接到mysql的(因已经达到mysql最大连接数). 只有当前500个httpd进程结束或被复用才可以连接得到了mysql. 

其实这个也很好解释了xgy_p的测试中若操作比较简单, pconnect比connect效率高很多, 而且跟使用jsp的连接池的速度比较接近. 因为这个时候httpd进程可以不断的给复用. 

而 当DB操作复杂, 耗时较长时, 因httpd会fork很多并发进程处理, 而先产生的httpd进程不释放db连接, 使得后产生的httpd进程无法连上db. 因为这样没有复用其它httpd进程的mysql连接. 于是会就产生很多连接超时, 像一开始的1000个并发连接测试说几乎都是连接超时就是这个原因. 

--- 
(反进来看jsp用的如果是纯粹的db连接池, 则不会有因为达到mysql连接上限而连不上的问题, 因为jsp的连接池会使得可以等待其它连接使用完毕并复用. ) 


因此在并发访问量不高时,使用pconnect可以简单提高访问速度, 但在并发量增大后, 是否再使用pconnect就要看程序员的选择了.. 

就我个人认为, php现在对mysql的连接并没有真正用到连接池, pconnect也只是相当于借了apache的进程池来用, 所以在并发访问量大的时候pconnect并不能很好的提高访问DB效率. 在这一点上. php的确比不上jsp

分享到:
评论

相关推荐

    解析php中mysql_connect与mysql_pconncet的区别详解

    说说mysql_connect与mysql_pconnect的区别,这俩函数用法上差不多,网上有说应该用pconnect的,pconnect是个 好东西;也有视pconnect如洪水猛兽的,坚决不让用pconnect的,也有态度暧昧不清的。那这个东西到底如何呢...

    PHP持久连接mysql_pconnect()函数使用介绍

    mysql_pconnect用法和mysql_connect类似: 复制代码 代码如下: <?php $conn = mysql_pconnect($host,$user,$pwd); mysql_select_db($dbname,$conn); $result=mysql_query(“select * from table_name where col_...

    php访问MYSQL数据库封装类.zip

    1,连接数据库 mysql_connect or mysql_pconnect  2,选择数据库 mysql_select_db  3,执行SQL查询 mysql_query  4,处理返回的数据 mysql_fetch_array mysql_num_rows mysql_fetch_assoc mysql_fetch_row etc 

    IIS下PHP连接数据库提示mysql undefined function mysql_connect()

    在很多php教程初学者都会在初次php mysql时出来undefined function mysql_connect() 错误提示,下面我们来分析原因中。

    php 不能连接数据库 php error Can’t connect to local MySQL server

    ?php $link=mysql_connect(‘localhost’,’root’,... 运行后报错 Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ 但在 命令行中能进入mysql [root@localhost local]# mysql -u root -p E

    Mysql数据库设计.pdf

    select group by having order by limit desc asc count sum avg max min resource mysql_connect(host,root,password); mysql_close(); bool mysql_select_db(tablename[,],连接返回变量); resource mysql_query...

    PHP中的MYSQL常用函数(php下操作数据库必备)

    1、mysql_connect()-建立数据库连接 格式: resource mysql_connect([string hostname [:port] [:/path/to/socket] [, string username] [, string password]]) 例: $conn = @mysql_connect(“localhost”, ...

    PHP访问MYSQL数据库封装类(附函数说明)

    复制代码 代码如下:<...connect or mysql_pconnect 2,选择数据库 mysql_select_db 3,执行SQL查询 mysql_query 4,处理返回的数据 mysql_fetch_array mysql_num_rows mysql_fetch_assoc mysql_fetch_row etc

    一个mysql数据库连接类

    这是一个比较常用的mysql+php的数据库连接类文件代码,这款连接类支持pconnect与mysql_connect来连接,用户可以根据自己的WEB应用类型来处理作选择。

    mysql的完整数据库连接PHP类库.zip

    $this->conn = mysql_pconnect($this->db_host, $this->db_user, $this->db_pwd); } else { //即使链接 $this->conn = mysql_connect($this->db_host, $this->db_user, $this->db_pwd); } if (!...

    PHP数据库长连接mysql_pconnect的细节

    近距离观察后发现,这家伙也不容易啊,要看Apache的脸色,还得听MySQL指挥。  对于作为Apache模块运行的PHP来说,要实现MySQL持久化连接,首先得取决于Apache这个web服务器是否支持Keep-Alive。  Keep-Alive  ...

    php配合jquery实现增删操作具体实例

    复制代码 代码如下:[removed]... //mysql_connect 建立连接,mysql_close($link)关闭非永久连接,mysql_pconnect 建立永久连接 //mysql_error返回mysql函数错误信息,mysql_errno返回mysql函数错误号码 //mysql_set_c

    linux系统和数据库试题

    6. 若一台计算机的内存为128MB,则交换分区的大小通常是? A. 64MB B. 128MB C. 256MB D....7. 下列哪条命令可以取消vim/vi中上一步的错误操作? A....8. 使用以下那条指令能够实现数据库的长久连接?... mysql_pconnect

    比较常用的mysql数据库连接类.zip

    一款比较常用的mysql php的数据库连接类文件代码,这款连接类支持pconnect与mysql_connect来连接,用户可以根据自己的WEB应用类型来处理作选择,小伙伴们可以自己下载修改使用。

    mysql的完整数据库连接PHP类库

    $this->conn = mysql_pconnect($this->db_host, $this->db_user, $this->db_pwd); } else { //即使链接 $this->conn = mysql_connect($this->db_host, $this->db_user, $this->db_pwd); } if (!mysql_...

    MySQL相关说明

    在 PHP 4.3.0 以后的版本中,允许在 mysql_connect() 函数和 mysql_pconnect() 函数中指定更多的客户端标记。下面列出所定义的常量: 表格 2. MySQL 客户端常量 常量 描述 MYSQL_CLIENT_COMPRESS ...

    [PHP]实用函数7

    成功返回连接符,失败时返回false int mysql_connect([string server[,string username[,string password]]]) //打开一个到MySQL服务器的持久性连接 int mysql_pconnect([string server[,string username[,...

    一个mysql数据库连接类.zip

    这是一个比较常用的mysql php的数据库连接类文件代码,这款连接类支持pconnect与mysql_connect来连接,用户可以根据自己的WEB应用类型来处理作选择。需要的朋友可以参考下,方便大家学习php

    discuz7 phpMysql操作类

    复制代码 代码如下: <... //连接数据库 function connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect = 0, $halt = TRUE, $dbcharset2 = ”) { $conn = empty($pconnect) ? ‘mysql_connect’ :

    mysql与mysqli的区别

    本文将为您描述mysql与mysqli的区别,具体操作方法:  mysqli连接是连接,而MySQL是非连接。  mysql连接:每当第二次使用的时候,都会重新打开一个新的进程。  mysqli连接:一直都只使用同一个进程。  好处:...

Global site tag (gtag.js) - Google Analytics