php关于mysql长连接问题

摘要:
php$db=mysql_connect;var_转储($db);$db2=mysql_connect;var_转储;睡觉页面打印信息resourceoftyperesourceoftypemysql连接数mysql˃showfullprocesslist+-----+---------------+---------------+--------+---------------+------------+---------------+-|Id|用户|主机|数据库|命令|时间|状态|信息|+--------+--------+------------+--------+----------+|32 |根|localhost:54408|NULL |查询|0|NULL | showfullprocesslist||44|root|localhost:55278|NULL|Sleep|3||NULL |+---------------+---------------+------------+---------连接通过第四个参数后,重复调用它。

1、当 函数 mysql_connect 的前三个参数(serverusernamepassword)相同,并且第四个参数(new_link)不传递时候,重复调用 mysql_connect 是会返回相同的连接。

php代码

<?php
$db = mysql_connect('localhost','root','root');
var_dump($db);
$db2 = mysql_connect('localhost','root','root');
var_dump($db2);
sleep(10);

页面打印信息

resource(3) of type (mysql link) resource(3) of type (mysql link) 

mysql连接数

mysql> show full processlist;
+----+------+-----------------+------+---------+------+-------+-----------------------+
| Id | User | Host            | db   | Command | Time | State | Info                  |
+----+------+-----------------+------+---------+------+-------+-----------------------+
| 32 | root | localhost:54408 | NULL | Query   |    0 | NULL  | show full processlist |
| 44 | root | localhost:55278 | NULL | Sleep   |    3 |       | NULL                  |
+----+------+-----------------+------+---------+------+-------+-----------------------+
2 rows in set

2、当函数 mysql_connect 传递了第四个参数(new_link)后,再重复调用它。

php代码

<?php
$db = mysql_connect('localhost','root','root',1);
var_dump($db);
$db2 = mysql_connect('localhost','root','root',1);
var_dump($db2);
sleep(10);

页面打印信息

resource(3) of type (mysql link) resource(5) of type (mysql link) 

mysql连接数

mysql> show full processlist;
+----+------+-----------------+------+---------+------+-------+-----------------------+
| Id | User | Host            | db   | Command | Time | State | Info                  |
+----+------+-----------------+------+---------+------+-------+-----------------------+
| 32 | root | localhost:54408 | NULL | Query   |    0 | NULL  | show full processlist |
| 45 | root | localhost:55320 | NULL | Sleep   |    4 |       | NULL                  |
| 46 | root | localhost:55321 | NULL | Sleep   |    4 |       | NULL                  |
+----+------+-----------------+------+---------+------+-------+-----------------------+

3、mysql_pconnect 持久连接

php代码

<?php
$db = mysql_pconnect('localhost','root','root');
var_dump($db);
$db2 = mysql_pconnect('localhost','root','root');
var_dump($db2);

页面打印信息

resource(3) of type (mysql link persistent) resource(4) of type (mysql link persistent) 

mysql连接数

mysql> show full processlist;
+----+------+-----------------+------+---------+------+-------+-----------------------+
| Id | User | Host            | db   | Command | Time | State | Info                  |
+----+------+-----------------+------+---------+------+-------+-----------------------+
|  1 | root | localhost:55391 | NULL | Query   |    0 | NULL  | show full processlist |
|  2 | root | localhost:55393 | NULL | Sleep   |    5 |       | NULL                  |
+----+------+-----------------+------+---------+------+-------+-----------------------+

4、mysql_pconnect 加上第四个参数(new_link)即可 建立多个 持久连接

php代码

<?php
$db = mysql_pconnect('localhost','root','root',1);
var_dump($db);
$db2 = mysql_pconnect('localhost','root','root',1);
var_dump($db2);

页面打印信息

resource(3) of type (mysql link persistent) resource(4) of type (mysql link persistent) 

mysql连接数

mysql> show full processlist;
+----+------+-----------------+------+---------+------+-------+-----------------------+
| Id | User | Host            | db   | Command | Time | State | Info                  |
+----+------+-----------------+------+---------+------+-------+-----------------------+
|  1 | root | localhost:55391 | NULL | Query   |    0 | NULL  | show full processlist |
|  2 | root | localhost:55393 | NULL | Sleep   |  316 |       | NULL                  |
|  3 | root | localhost:55418 | NULL | Sleep   |    4 |       | NULL                  |
+----+------+-----------------+------+---------+------+-------+-----------------------+
3 rows in set

5、总结:

函数 mysql_pconnetc 创建的 持久化连接 在php脚本结束后,mysql的连接并不会立即结束。什么时候结束,是由mysql自己管理。函数 mysql_colse 不能关闭 mysql_pconnetc 的连接。

函数 mysql_connetc 创建的 连接 在php脚本结束后,mysql的连接也会相应结束。

免责声明:文章转载自《php关于mysql长连接问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSS自定义滚动条样式 -webkit-scrollbar在存储过程里创建临时表,往表中直接插入数据下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

mysql命令行的一些小技巧【实用:多屏显示,格式化输出等】

1.以html格式输出结果使用mysql客户端的参数–html或者-T,则所有SQL的查询结果会自动生成为html的table代码$ mysql -u root --htmlWelcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 3286Serve...

mysql存储过程 详细注释

原文:https://my.oschina.net/u/3582142/blog/1581929 delimiter $$ /* 重新定义mysql结束符,而不再是分号是结束符 */create procedure mergeDeclare() /* 创建存储过程 */BEGIN/*定义局部变量*/DECLARE id INT DEFAULT 0;DECL...

jenkins之部署、启动、关闭

jenkins可以通过内置的应用服务器或者借助其他应用服务器启动 目录 1、启动jenkins 2、关闭jenkins 3、重启jenkins 4、重新加载jenkins配置信息 前言:部署jenkins应用,是要安装java的,最新版本的jenkins是需要按照1.8版本的jdk,不然启动不了。 下载war包:https://www.jenkins.io...

MySql中float类型的字段的查询

在MYSQL中,字段类型为FLOAT的字段,如果不指定FLOAT的长度和小数点位数,要根据FLOAT字段的值精确查找,结果会是空,这也是初学者经常会犯的一个错误。我们下来看一些例子: CREATE TABLE `NewTable` (`id` int(11) NOT NULL AUTO_INCREMENT ,`c1` float(3,2) NOT NULL...

EasySharding.EFCore 如何设计使用一套代码完成的EFCore Migration 构建Saas系统多租户不同业务需求且满足租户自定义分库分表、数据迁移能力?

下面用一篇文章来完成这些事情 多租户系统的设计单纯的来说业务,一套Saas多租户的系统,面临很多业务复杂性,不同的租户存在不同的业务需求,大部分相同的表结构,那么如何使用EFCore来完成这样的设计呢?满足不同需求的数据库结构迁移 这里我准备设计一套中间件来完成大部分分库分表的工作,然后可以通过自定义的Migration 数据库文件来迁移构建不同的租户数据...

MySQL中使用replace into语句批量更新表数据

作为示例,我们在这里使用名为testdb的数据库,并且在其中创建两张一模一样的表: drop table if exists test_table_1; create table test_table_1 ( name varchar(30) primary key, age integer ); drop table if exists...