300元3小时服务不限次数-400块钱3小时无限次快餐,500一晚同城约茶,风楼阁交友平台

千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:成都千锋IT培训  >  技术干货  >  PHP 连接数据库什么情况下才会用到持久链接mysql_pconnect()?

PHP 连接数据库什么情况下才会用到持久链接mysql_pconnect()?

来源:千锋教育
发布人:xqq
时间: 2023-10-14 09:14:10

一、PHP 连接数据库什么情况下才会用到持久链接 mysql_pconnect()

一般模式,当php-cgi随请求结束时,mysql_close()是否执行,并无大的影响,因为这种情况下,mysql连接也会随进程结束而关闭;

当开启php-fpm pm=static方式可能用到,因为此时,php-cgi进程是持久的,当建立长连接后,后面的请求将可以继续请求wait_timeout时间内的的连接,wait_timeout会出现MySQL server has gone away 错误,这是你要加上重连机制。

持久数据库连接是指在脚本结束运行时不关闭的连接。当收到持久连接的请求时,PHP 将检查是否已经存在相同的持久连接(前面已经开启的)——如果存在,将直接使用这个连接。如果不存在,则建立新的连接。所谓“相同”的连接是指用相同的用户名和密码连接到相同主机的连接。

对 web 服务器的工作方式和负载分配方式没有完全理解可能会错误地理解持久连接。特别是持久连接不会在相同的连接上提供建立“用户会话”的能力,也不提供有效建立事务的能力。实际上,要非常清楚的了解持久连接不会提供任何非持久连接无法实现的功能。

延伸阅读:

二、为什么要持久化连接

这和 web 服务器的工作方式有关。web 服务器可以通过三种方法来利用 PHP 生成 web 页面。

名列前茅种方法是将 PHP 自以为 CGI“包装器”用作一个单独运行的语言解释器(CGI Wapper)。当以这种方法运行时,PHP 会为向 web 服务器的每个 PHP 页面请求创建并销毁 PHP 解释器的时候实例。由于其会随每个请求的结束而销毁,因此其获取的任何资源(例如指向 SQL 数据库服务器的链接)都会在销毁时关闭。在这种情况下,不会从使用持久连接中获得任何好处——因为根本不会持久。

第二,也是最流行的方法是把 PHP 用作多进程 web 服务器的一个??椋庵址椒壳爸皇视糜?Apache。多进程的服务器通常有一个父进程和一组子进程协调运行,子进程负责提供网页的工作。每当接收达到客户端提出请求时,该请求会传递给尚未给其它客户端提供服务的某个子进程。这也就是说当相同的客户端第二次向服务端发出请求时,它将有可能由与名列前茅次不同的某个子进程提供服务。在开启了一个持久连接后,所有请求 SQL 服务的后继页面都能够重用与 SQL 服务器建立的相同连接。

最后一种方法是将 PHP 用作多线程 web 服务器的插件。目前 PHP 支持 WSAPI 和 NSAPI(在 Windows 上),允许 PHP 作为 Netscape FastTrack(iPlanet)、Microsoft 的 Internet Information Server (IIS) 和 O’Reilly 的 WebSite Pro 等多线程服务器的插件使用。该行为与前面描述的多过程模型相同。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

负载均衡有哪些优势?

2023-10-14

Django限制用户上传文件格式与大小的优异处理方式是什么?

2023-10-14

强引用、软引用、弱引用、幻象引用有什么区别?

2023-10-14

最新文章NEW

使用 XML 有哪些好处??

2023-10-14

python 在cmd 下执行脚本语句和在python shell 中的>>>下执行语句有什么区别?

2023-10-14

Fortran语言中read*,和read(*,*)的区别?

2023-10-14

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>