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

2.短连接:

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

实验:

<?php
$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连接情况的图片



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

3.长连接:

当我们创建的数据连接为PDO持久化连接时,该连接在使用完毕或者PHP脚本结束后并不会被关闭,而是被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连接情况的图片





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

3. 总结

方式 优点 缺点
短连 及时的释放资源 每次得重新建立连接,开销大,耗时大
长连 不用现场建立连接,耗时小 连接一直保持着,耗费服务器资源

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

最新文章

  1. Dumpbin 工具的使用
  2. SQL编码乱码解决方法
  3. 渗透日记-利用SQLMAP伪静态注入
  4. 关于mongoldb 启动时显示 add already in use
  5. WCF框架处理流程初探
  6. appid 评价
  7. 限制非安全IP访问
  8. SAS 5/iR Adapter 驱动下载
  9. 在AE中通过SDE添加图层(转)
  10. Inf2Cat, signability test failed.
  11. mesos博客集
  12. nuget pack 时不包含依赖包(而不是引用项目的dll,区别于IncludeReferencedProjects)
  13. HMM 隐马尔科夫模型
  14. 【网站管理1】_dede织梦后台如何发布文章
  15. Golang 网络爬虫框架gocolly/colly 五 获取动态数据
  16. Uva 10339 - Watching Watches【数论,暴力】
  17. String输出结果to thi
  18. python-pcl
  19. Matplotlib学习
  20. MyEclipse jsp 中文乱码

热门文章

  1. 01 Memcached 安装与介绍
  2. Java -- 数字
  3. C# 中安全代码与不安全代码
  4. php扩展安装phpize
  5. iOS 蓝牙功能 bluetooth
  6. python基础: day4作业计算器
  7. 像使用linux一样使用mac
  8. java堆分析神器MAT
  9. Linux c编程:同步属性
  10. js与jquey的表达