Home > Backend Development > PHP Tutorial > mysql_ pconnect和mysql_connect 有什么区别呢

mysql_ pconnect和mysql_connect 有什么区别呢

WBOY
Release: 2016-06-23 14:19:45
Original
1138 people have browsed it

MySQL 数据库 php

手册上说主要有两个区别
1.不重复发出连接请求
2.mysql_close不起作用

第一点有点不明白。 那是不是我 mysql_connect  不再次发出请求   也不中途mysql_close  就和 mysql_ pconnect  一样了呢。

如果是这样 

那我定义一个函数

function  connect(){
  
   static $connect_id;
   if( !$connect_id )
      $connect_id = mysql_connect("localhost","hao","hao");
   return $connect_id;

}
外面调用 这个函数来连接数据库。  connect()
就不会出现重复发出连接请求啦。 
那是不是和mysql_ pconnect 一样了呢

欢迎大家回答   谢谢

回复讨论(解决方案)

resource mysql_connect ([ string $server [, string $username [, string $password [, bool  $new_link [, int $client_flags ]]]]] )

当你没有为 $new_link 指定true值时,他们的行为是一样的。同样的参数第二次调用 ,将不会建立新连接,而将返回已经打开的连接标识

那是不是我 mysql_connect 不再次发出请求也不中途mysql_close 就和 mysql_ pconnect 一样了呢。
不是!
数据库连接分为两个阶段
第一阶段:建立与数据库服务器的物理连接
第二阶段:登录数据库服务器,建立与数据库的业务链接

对于 mysql_connect, mysql_close 将切断这两个连接(php程序结束后会自动调用 mysql_close)
对于 mysql_pconnect,mysql_close 不起作用。php程序结束后自动切断到数据库的业务链接。而保留物理连接,准备复用

那是不是我 mysql_connect 不再次发出请求也不中途mysql_close 就和 mysql_ pconnect 一样了呢。
不是!
数据库连接分为两个阶段
第一阶段:建立与数据库服务器的物理连接
第二阶段:登录数据库服务器,建立与数据库的业务链接

对于 mysql_connect, mysql_close 将切断这两个连接(php程序结束后会自动调用 mysql_close)
对于 mysql_pconnect,mysql_close 不起作用。php程序结束后自动切断到数据库的业务链接。而保留物理连接,准备复用

版主 谢谢你的回答。 我还不怎么明白你指的mysql_pconnect复用。  请问可以跨脚本复用不。 比如A脚本用了mysql_pconnect ,然后在A脚本未执行完的时候开了B脚本。 那B脚本可以用到A脚本的连接,而不用再次连接数据库不。

mysql_pconnect 有哪些优势呢   我看到有些网上的数据库操作类; 没用这个。
不知道作用大不大呢。

数据库连接总是必要的
通常网络连接都比较慢,也就是说如果不切断到数据库的物理连接的话,下次访问可能就要快些(前提是上次连接时的网络通道可以复用)
长连接一般用在web服务与数据库服务不在同一台机器上的场合

像你描述的“在A脚本未执行完的时候开了B脚本”情况,是不能复用连接的,因为复用的前提是连接处于空闲状态

数据库连接总是必要的
通常网络连接都比较慢,也就是说如果不切断到数据库的物理连接的话,下次访问可能就要快些(前提是上次连接时的网络通道可以复用)
长连接一般用在web服务与数据库服务不在同一台机器上的场合

像你描述的“在A脚本未执行完的时候开了B脚本”情况,是不能复用连接的,因为复用的前提是连接处于空闲状态

谢谢版主  我大概明白了。
这句话我要再想一下为什么 
  长连接一般用在web服务与数据库服务不在同一台机器上的场合

前面已经说了,不在同一台机器,就是通过网络了
而网络不是给你一个人使用的,所以实际连接起来相对比较慢。因此保留物理连接(连上了就不放手)要划算些
而同在一台机及上时,因为不需要通过网络,所以比较快。相反,长连接反而因为来不及置为空闲状态,挤占了大量资源,导致数据库连不上

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template