php mysql_connect pmysql_connect区别

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

命令行访问时

[[email protected] 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服务器. 另一个会造成锁定的就是事务了

时间: 2024-10-07 07:54:02

php mysql_connect pmysql_connect区别的相关文章

mysqli_connect和mysql_connect的区别

一:Mysqli.dll是一个允许以对象的方式或者过程操作数据库的,它的使用方式也很容易.这里就几个常见的操作和mysql.dll做一个对比.  1:mysql.dll(可以理解为函数式的方式): $conn = mysql_connect('localhost', 'user', 'password'); //连接mysql数据库 mysql_select_db('data_base'); //选择数据库 $result = mysql_query('select * from data_ba

相关的链接

<!DOCTYPE NETSCAPE-Bookmark-file-1><!-- This is an automatically generated file.It will be read and overwritten.Do Not Edit! --><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"><TITLE>Bookmarks

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

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

php中@mysql_connect与mysql_connect有什么区别

php中@mysql_connect与mysql_connect有什么区别 屏蔽错误如果有错的话,会把语句都显示出来.加@就不显示[email protected]_connect('localhost','root','123') or die ("数据库连接失败"); 这样写最好如果失败(or die )显示 "数据库连接失败" 字样 原文地址:https://www.cnblogs.com/hnqyliu/p/10353854.html

PHP中MySQL、MySQLi和PDO的用法和区别【原创】

对于一个初学PHP的自己,对数据库的连接有着很大的疑惑,从Java转到PHP.数据库连接变了,以前只知道JDBC连接数据库,或者直接用框架调用,对于的PHP的数据库连接方式,及其应用.不是很了解,于是查阅了很多资料及自己实际操作,写下自己的一点总结笔记. PHP的MySQL扩展(优缺点) 设计开发允许PHP应用与MySQL数据库交互的早期扩展.mysql扩展提供了一个面向过程 的接口: 并且是针对MySQL4.1.3或更早版本设计的.因此,这个扩展虽然可以与MySQL4.1.3或更新的数 : 据

php中关于mysqli和mysql区别的一些知识点分析

看书.看视频的时候一直没有搞懂mysqli和mysql到底有什么区别.于是今晚“谷歌”一番,整理一下.需要的朋友可以参考下. 一: PHP-MySQL 是 PHP 操作 MySQL 资料库最原始的 Extension ,PHP-MySQLi 的 i 代表 Improvement ,提更了相对进阶的功能,就 Extension 而言,本身也增加了安全性.而 PDO (PHP Data Object) 则是提供了一个 Abstraction Layer 来操作资料库,用讲的其实看不出来有有什麽差别,

PHP中MySQL、MySQLi和PDO的用法和区别

PHP的MySQL扩展(优缺点) 设计开发允许PHP应用与MySQL数据库交互的早期扩展.mysql扩展提供了一个面向过程的接口: 并且是针对MySQL4.1.3或更早版本设计的.因此,这个扩展虽然可以与MySQL4.1.3或更新的数 : 据库服务端 进行交互,但并不支持后期MySQL服务端提供的一些特性. PHP的mysqli扩展 mysqli扩展,我们有时称之为MySQL增强扩展,可以用于使用 MySQL4.1.3或更新版本中新的高级特性: mysqli扩展在PHP 5及以后版本中包含: m

PHP各版本的区别

PHP的大版本主要分三支:PHP4/PHP5/PHP6 其中,PHP4由于太古老.对OO支持不力已基本被淘汰,请无视PHP4. PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,很多功能已在PHP5.3.3上实现,所以也不详述,请无视PHP6. PHP5的版本主要分四支:PHP5.2之前的版本.PHP5.2.X.PHP5.3和日前发布的PHP5.4. 那我们应该如何选择适用自己项目的版本呢? PHP5.2之前的版本不值得考虑,因为某些功能缺陷或者BUG,PHP5.2之前的版本.PHP5

PHP 5.2、5.3、5.4、5.5、5.6 版本区别对比以及新功能详解

截至目前(2015.1), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护  的 PHP5.2, 其余的一半用户在使用 PHP5.3 .因为 PHP 那"集百家之长"的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征. PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束 PHP5.2:JSON 支持 PHP5.3:弃用的功能,匿名函数,新增魔术方