热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql_connect与mysql_pconnect的区别详解

在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解的...
在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解的朋友可参考.

PHP mysql_pconnect

mysql_pconnect() 函数打开一个到 MySQL 服务器的持久连接.

mysql_pconnect() 和 mysql_connect() 非常相似,但有两个主要区别.

1.当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。

2.其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。

语法:mysql_pconnect(server,user,pwd,clientflag)

参数 描述

server 可选。规定要连接的服务器。

可以包括端口号,例如 "hostname:port",或者到本地套接字的路径,例如对于 localhost 的 ":/path/to/socket".

如果 PHP 指令 mysql.default_host 未定义(默认情况),则默认值是 'localhost:3306'.

user 可选,用户名,默认值是服务器进程所有者的用户名.

pwd 可选,密码,默认值是空密码.

clientflag 可选,client_flags 参数可以是以下常量的组合:

•MYSQL_CLIENT_SSL - 使用 SSL 加密

•MYSQL_CLIENT_COMPRESS - 使用压缩协议

•MYSQL_CLIENT_IGNORE_SPACE - 允许函数名后的间隔

•MYSQL_CLIENT_INTERACTIVE - 允许关闭连接之前的交互超时非活动时间

返回值,如果成功,则返回一个 MySQL 持久连接标识符,出错则返回 FALSE.

提示和注释

注释:可选参数 clientflag 自 PHP 4.3.0 版起可用.

提示:要创建一个非持久连接,请使用 mysql_connect() 函数.

例子,代码如下:

PHP mysql_connect

mysql_connect() 函数打开非持久的 MySQL 连接.

语法:mysql_connect(server,user,pwd,newlink,clientflag)

参数 描述

server 可选,规定要连接的服务器.

可以包括端口号,例如 "hostname:port",或者到本地套接字的路径,例如对于 localhost 的 ":/path/to/socket"。

如果 PHP 指令 mysql.default_host 未定义(默认情况),则默认值是 'localhost:3306'.

user 可选,用户名,默认值是服务器进程所有者的用户名.

pwd 可选,密码,默认值是空密码.

newlink 可选,如果用同样的参数第二次调用 mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识,参数 new_link 改变此行为并使 mysql_connect() 总是打开新的连接,甚至当 mysql_connect() 曾在前面被用同样的参数调用过.

clientflag 可选。client_flags 参数可以是以下常量的组合:

•MYSQL_CLIENT_SSL - 使用 SSL 加密

•MYSQL_CLIENT_COMPRESS - 使用压缩协议

•MYSQL_CLIENT_IGNORE_SPACE - 允许函数名后的间隔

•MYSQL_CLIENT_INTERACTIVE - 允许关闭连接之前的交互超时非活动时间

返回值:如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE.

提示和注释

注释:脚本一结束,到服务器的连接就被关闭,除非之前已经明确调用 mysql_close() 关闭了.

提示:要创建一个持久连接,请使用 mysql_pconnect() 函数.

例子,代码如下:

mysql_connect与mysql_pconnect的区别

这俩函数用法上差不久不多,网上有说应当用pconnect的,pconnect是个好器材,也有视pconnect如洪水猛兽的,果断不让用pconnect的,也有立场模糊不清的,那这个器材到底如何呢?

永远链接并不是说,办事器打开了一个连接,然后所有的人都共享这个链接,永远连接一样是每个客户端来就打开一个连接,有200人接见就有200个连接,其实mysql_pconnect()本身并没有做太多的处理惩罚,它独一做的只是在php运行停止后不主动close掉mysql的连接.

在php经cgi体式格式运行时pconnect和connect是根蒂根基没有区此外,因为cgi体式格式是每一个php接见起一个过程,接见停止掉队程也就停止了,资料也全开释了.

当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.

当db操纵错杂,耗时较长时,因httpd会fork很多并发过程处理惩罚,而先产生的httpd过程不开释db连接,使得后产生的httpd过程无法连上db. 因为如许没有复用其它httpd过程的mysql连接,于是会就产生很多连接超时,在并发接见量不高时,应用pconnect可以简单进步接见速度,但在并发量增大后,是否再应用pconnect就要见地度员的选择了.

就我小我认为,php如今对mysql的连接并没有真正用到连接池,pconnect也只是相当于借了apache的过程池来用,所以在并发接见量大的时辰pconnect并不克不及很好的进步接见db效力.

在实际的应用中,用mysql_pconnect的话,每次刷新和恳求新的页面都斗劲快,而用mysql_connect的话,每次刷新都要从头恳求,当数据库连接斗劲慢的时辰,就能看出差别了。当你的数据库连接斗劲慢,DB操纵不是很错杂,并且你的法度足够自负,不会产存亡锁的时辰,或者你拥有对办事器的把握权,满足以上四个前提中的随便率性两个,那就可以用pconnect.

pconnect不消在脚本里封闭,可以在mysql中设置lifetime,也可以写shell按期扫描,kill掉休眠过长的连接,一句话总结:要用好pconnect,不仅仅是php脚本的事,还关系到数据库和办事器的设置.

本文地址:

转载随意,但请附上文章地址:-)

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
author-avatar
然后突然4_944
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有