<?php
        mysql_pconnect('192.168.75.128', 'root', 'root');
        mysql_close();
        sleep(10);
        echo 'pconnect';

命令行访问时

[root@LocalWeb01 baidu91]# php mysql.php

查看mysql进程的线程的情况

show processlist

15 | root | 192.168.75.128:43457 | NULL | Sleep   |     9 |       | NULL

超过10秒钟,线程号没有了,为什么长连接没有起作用了,因为php进程结束后,释放所有资源

可以查看php进程

10秒后

可以发现

php的线程数量可以通过 /usr/local/php/etc/php-fpm.conf  max-chlidren修改,

浏览器访问时

确实有长连接,

可以做个实验,把php进程杀掉,在查看mysql线程情况,如下图

使用pconnect时, 有请求连接mysql时, php会检查是否之前有条相同的连接(以相同的用户名密码连接到同一个mysql服务器)已经建立, 如果有的话就直接使用这条连接

假设mysql服务器被配置为最大支持10个并发. 而nginx被配置为使用100个子进程.

nginx由一个父进程来协调将收到的http request分发给哪个空闲中的子进程处理,  这样很快处理了10个http请求, 假设10个都分配给了不同的子进程, 那末10条跟mysql间的持久连接就建立了, mysql的能力已经到了极限.

这时又来了一个http请求, nginx将它分给其他的任意不在这10个子进程中的进程, 那末这个进程就没有办法建立到mysql的连接了, 因为坑位已经满了.

使用持久连接还会有其他方面的问题.

如 果在你脚本中使用了持久连接, 又进行了锁表操作的话,  如果到脚本结束也没有去解锁的话.  那么下次再运行这个脚本的话, 它为了获得lock table会在那里无尽地等待过去的它unlock table, 过去的它已经不能回来了, 这里成了个死循环. 除非重启web或者mysql服务器. 另一个会造成锁定的就是事务了

php mysql_connect pmysql_connect区别的更多相关文章

  1. mysql_connect和mysql_pconnect区别(转)

    php中mysql_pconnect()的实现方式:其实mysql_pconnect()本身并没有做太多的处理,它唯一做的只是在php运行结束后不主动close掉mysql的连接.mysql_pcon ...

  2. mysql_connect和mysql_pconnect区别

    php中mysql_pconnect()的实现方式:其实mysql_pconnect()本身并没有做太多的处理,它唯一做的只是在php运行结束后不主动close掉mysql的连接.mysql_pcon ...

  3. php中mysql_pconnect()的实现方式.

    网上有人说要想让mysql_pconnect正常稳定的工作,必须保证mysql max_connect参数设定大于或等于apache的最大线程(进程)数.这句话是有一定道理的.这要简单了解mysql_ ...

  4. MySQL连接问题【mysql_connect和mysql_pconnect区别】

    --MySQL连接问题[mysql_connect和mysql_pconnect区别] -------------------------------------------------------- ...

  5. php中@mysql_connect与mysql_connect有什么区别

    屏蔽错误如果有错的话,会把语句都显示出来.加@就不显示$link=@mysql_connect('localhost','root','123') or die ("数据库连接失败" ...

  6. PHP函数 addslashes() 和 mysql_real_escape_string() 的区别 && SQL宽字节,绕过单引号注入攻击

    首先:不要使用 mysql_escape_string(),它已被弃用,请使用 mysql_real_escape_string() 代替它. mysql_real_escape_string() 和 ...

  7. mysql_fetch_row,mysql_fetch_array,mysql_fetch_object,mysql_fetch_assoc的区别!

    php从mysql中访问数据库并取得数据,取得结果的过程中用到好几个类似的方法,区别及用法值得区分一下,看下面的代码   代码如下: <?php $link=mysql_connect('loc ...

  8. MySQL主机127.0.0.1与localhost区别总结

    1. mysql -h 127.0.0.1 的时候,使用TCP/IP连接, mysql server 认为该连接来自于127.0.0.1或者是"localhost.localdomain&q ...

  9. php单引号和双引号的区别与用法

    php里的单引号把内容当成纯文本,不会经过服务器翻译.而双引号则与此相反.里面的内容会经过服务器处理(process). 举个简单的例子:   $foo="data"; echo ...

随机推荐

  1. ngnix +tomcat7 简单配置

    1.下载tomcat7 修改conf 文件夹下的server.xml文件 1.<Server port="8205" shutdown="SHUTDOWN" ...

  2. sencha touch 在线实战培训 第一期 第八节 (完结)

    2014.1.15晚上8点开的课 这是本期课程的最后一课,下期课程预计在春节后继续. 如果你有什么意见和建议可以将他们发送到邮箱:534502520@qq.com 本期培训一共八节,前三堂免费,后面的 ...

  3. 硬件RDMA的驱动配置和测试

    author:headsen chen date: 2019-01-18  10:22:20 notice:created  by headsen chen himself and not allow ...

  4. Stooge 排序

    Stooge排序是一种低效的递归排序算法,甚至慢于冒泡排序.在<算法导论>第二版第7章(快速排序)的思考题中被提到,是由Howard.Fine等教授提出的所谓“漂亮的”排序算法. 实现 如 ...

  5. 如何查看Mac电脑的处理器核心数目-CPU的核心数目

    1.通过点击关于本机来查看

  6. 【CF708E】Student's Camp 组合数+动态规划

    [CF708E]Student's Camp 题意:有一个n*m的网格,每一秒钟,所有左面没有格子的格子会有p的概率消失,右面没有格子的格子也会有p的概率消失,问你t秒钟后,整个网格的上边界和下边界仍 ...

  7. python的for else组合用法

    如下代码,输入评论,如果评论中含有敏感词则更换成*号,否则正常输入. li = ["老师", "你好", "333", "4444 ...

  8. 170809、 把list集合中的数据按照一定数量分组

    /** * @Desc : 切分list位多个固定长度的list集合(我这是业务需要,直接是1w条数据切分) * @Author : RICK * @Params: [historyList] * @ ...

  9. This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in

    地址:http://stackoverflow.com/questions/18852983/eclipse-reports-rendering-library-more-recent-than-ad ...

  10. https-->http and http-->https bitransfer

    openssl s_client -connect myupload.mysite.net:443/cgi-bin/posupload.cgi -status -cert client.pem -ve ...