使用Thinkphp搭建服务器后,进行ab测试发现并发性能几乎为0。-c参数设置为1和2,8,每秒完成请求都只有0.9左右。

于是打开mysql全局日志一看,我的乖乖,一个http请求就connect数据库一次close一次,什么session保存,mysql长连接,不存在的。

当时不知道thinkphp的G方法可以用来调试,找不到Thinkphp底层用于建立数据库连接的函数,于是走了弯路。

弯路一:尝试在QT客户端内部实现一个小容器,保存session,同时让php服务器接受参数并判断,如果是同一个tcp请求,则重用该数据库连接。直到后来发现static参数的声明并没有什么用处,每次请求都是重新声明。

服务器端代码思路如下:

if(serverPID==clientParam){ }

else{new static connect}//建立静态变量

弯路二:尝试使用mysqlpconnect函数,直接另起炉灶,无奈复杂度太大,TP框架还就挺好用的(累觉不爱),数组读取不需要造轮子处理返回值。于是重新开始。

弯路三:尝试使用tcp连接,放弃http协议(我终于发现php为什么做不了高性能服务器了)

弯路四:尝试通过apache管理mysql长连接(这时,我恍然间发现php只是作为apache的小弟在运行,apache每次请求都拿出对应的线程)

在重复了更多的弯路后,我在查找XDebug的使用方法时,顺路查询了Thinkphp的G方法,于是靠着G方法测运行时间,找到了TP框架底层建立数据库连接的函数 new PDO(thinkphp/library/think/db/Driver.class.php 行108),把param参数换成允许持久化。

参考了几篇设置php mysql长连接的博客,设置了php mysql apache的配置文件参数,最终实现了mysql连接复用。

记录一次吃力的探索过程【Thinkphp搭建Mysql长连接并重用】相关推荐

  1. php mysql长连接聊天室_PHP之探索MySQL 长连接、连接池

    PHP连接MysqL的方式,用的多的是MysqL扩展.MysqLi扩展.pdo_MysqL扩展,是官方提供的.PHP的运行机制是页面执行完会释放所有该PHP进程中的所有资源的,如果有多个并发访问本地的 ...

  2. 苹果cms安装mysql检测失败_maccms(苹果cms)采集过程报错--MySQL server has gone away错误的解决办法...

    maccms(苹果cms)采集过程报错--MySQL server has gone away,造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... value ...

  3. arcengine遍历属性表_记录一次Hive表清理过程

    记录一次Hive表清理过程 背景 时间:2020-07-17 在用spark+hive做数仓的过程中往往会产生很多表,过多历史表会很快消耗掉有限的hdfs资源,并且时间过于久远的表一般不会具有利用价值 ...

  4. 记录一次nginx502/504问题解决过程

    记录一次nginx502/504问题解决过程 参考文章: (1)记录一次nginx502/504问题解决过程 (2)https://www.cnblogs.com/wscsq789/p/1001687 ...

  5. 记录一下自己学习网络安全的过程

    记录一下自己学习网络安全的过程 从八月份决定学习一下网络安全,完全从零开始,在这里记录一下,当作是学习笔记,也当作是过程记录,希望自己坚持下去

  6. NLP实验记录——事件编码表征方法探索

    NLP实验记录--事件编码表征方法探索 1. 原有方案简介 2. 参考方案 3. 实验部分 3.1 基本结构 3.2 样本构建 3.3 模型选择 1. 原有方案简介 前段时间在做事件共指相关的工作,做 ...

  7. html5调用系统声音1s响一次_记录一次系统性能调优过程

    在线上环境,由于业务场景需要,要求程序能够在普通的4G机器中依然正常运行. 而原来的环境配置为8核16G,微服务部署,一共有6个功能模块. 而现在要求在一台4核4G的设备上正常运行. 问题清单 模块合 ...

  8. 简单记录一下fabric版本1.4的环境搭建,

    简单记录一下fabric版本1.4的环境搭建,运行环境为Ubuntu18.04,其中一些内容是根据官方文档整理的,如有错误欢迎批评指正. 本文只介绍最简单的环境搭建方法,具体的环境搭建解析在这里深入解 ...

  9. mysql 查询执行过程_深入浅出Mysql(一)——sql查询执行过程

    一.sql查询执行过程概括 下面给出的mysql基本架构示意图,从中你可以清楚的mysql的各个模块和执行过程. 大体来说可以分为两部分Server层和储存引擎层.Server层包括连接器.查询缓存. ...

最新文章

  1. 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用!
  2. python试卷(有答案版本、个人答案不是官方答案)_python试卷(有答案版本,个人答案不是官方答案).doc...
  3. 请写php合并数组,合并PHP数组
  4. K8S教程:使用kubebuilder开发简单的Operator
  5. 前端html5CSS3颜色表示法
  6. openfire log4j:ERROR setFile(null,true) call failed.
  7. Python 之父从 Dropbox 退
  8. Android studio 升级指定dradle
  9. opencore0.6.4_iOS 13.4/iPadOS 13.4正式版发布:iCloud支持文件夹共享
  10. 【故障诊断分析】基于matlab FFT轴承故障诊断【含Matlab源码 1397期】
  11. 安卓游戏服务器修改,【httpcather/Thor】课程二,用抓包工具修改微信小游戏,还能保存到服务器...
  12. 【统计学】三大相关系数之斯皮尔曼相关系数(spearman correlation coefficient)
  13. 贾俊平统计学思维导图- 第六章 统计量及其抽样分布
  14. 苹果手机自带表格软件_苹果手机还自带扫描仪,没想到今天才发现
  15. 破解压缩包密码的正确思路原理
  16. php彩蛋入侵,这隐藏彩蛋,可太牛批了!
  17. uview tabs标签根据文字长度占不同的宽
  18. labview 读取xml_在LabVIEW中使用XML
  19. 用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误
  20. pn532写入手机nfc_NFC的PN532 读写命令格式

热门文章

  1. 国内工业机器人发展水平综述
  2. 标识符---概述及组成规则
  3. 阿里云企业物联网平台推出千里传音播报服务 高效打造云端一体智能硬件
  4. persistence.cpp:2197:ann.xml(1): There should be space between attributes in function icvXMLParseTag
  5. Android 超级轻量的版本更新库AppUpdate
  6. Keras系列之文本向量化
  7. 使用img标签能使用background-size:conver一样的效果
  8. 【转】类别catagory的用法
  9. python之if嵌套
  10. 名悦集团:3月雨季来袭,行车上路安全指南请收好