php mysql 释放连接_php和mysql连接方式(短 长 池)

一个php work进程只能处理一个请求,当完成一个请求了,才能处理下一次的请求

2.短连接:

执行到php关闭mysql连接的代码时,就断开,否则在处理本次请求结束的时候,释放mysql连接

实验:

$dbhost = '127.0.0.1';

$dbdatabase = 'im';

$username = 'root';

$userpass = '123456';

$dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase.';';

$dbh=new PDO($dsn,$username,$userpass);

$stmt=$dbh->query('SELECT id FROM im_fri');

$row=$stmt->fetch();

sleep(10);

var_dump($row);

并发请求: /usr/local/ab/usr/bin/ab -c 100 -n 100 http://192.168.149.130/login/index

结果: 查看mysql连接数: show full processlist

这里我截了php work进程,和两个时刻的mysql连接情况的图片

f5cace9ecdfad1b1b4ad8f04f34aab17.png

e6e2b1344ed30ac9b4046fb434e67c4c.png

fd9060d9ab08b8ea7687d063ca68cc79.png

一共五个php-fpm进程,mysql有五个连接,连接的id,会递增,说明每次请求完成,mysql连接消失,新的请求,php会重新连接mysql。

3.长连接:

当我们创建的数据连接为PDO持久化连接时,该连接在使用完毕或者PHP脚本结束后并不会被关闭,而是被PHP缓存起来。当另一个使用相同凭证(主机、端口、数据库名、用户名、密码等信息完全一致)的PHP脚本请求建立连接时,PHP将直接返回之前被缓存起来的连接,从而达到连接重用。持久连接缓存可以避免每次访问数据库都要建立一个新连接的开销。

实验:

$dbhost = '127.0.0.1';

$dbdatabase = 'im';

$username = 'root';

$userpass = '123456';

$dsn='mysql:host='.$dbhost.';dbname='.$dbdatabase.';';

$dbh=new PDO($dsn,$username,$userpass, [PDO::ATTR_PERSISTENT => true]);

$stmt=$dbh->query('SELECT id FROM im_fri');

$row=$stmt->fetch();

sleep(10);

var_dump($row);

并发请求: /usr/local/ab/usr/bin/ab -c 100 -n 100 http://192.168.149.130/login/index

结果: 查看mysql连接数: show full processlist

这里我截了php work进程,和两个时刻的mysql连接情况的图片

f5cace9ecdfad1b1b4ad8f04f34aab17.png

e77fc32dea7774937a1ebc429057e98a.png

fc10cbc4be54f0560dbf34be4dc10e11.png

一共五个php-fpm进程,mysql有五个连接,连接的id不会变动,说明每次请求完成,mysql连接不会消失,在每个php-fpm进程中处理新的请求,php会重用以前mysql连接, 请求都结束了,每个php-fpm进程和mysql的连接还是不会断的,一直保持着。

3. 总结

方式

优点

缺点

短连

及时的释放资源

每次得重新建立连接,开销大,耗时大

长连

不用现场建立连接,耗时小

连接一直保持着,耗费服务器资源

10台php机器,每台机器上面有50个php-fpm进程,长连接的话, mysql要有五百个线程和500个php-fpm进程保持连接,可想mysql的上下文切换。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值