有个资料看得我云里雾里的。现在用自己的言语来总结一下,写文字,能够加深自己的理解。也会在写的过程中帮助自己发现理解方面瑕疵,继续查资料求证。

短链接的缺点:创建一个连接,程序执行完毕后,就会自动断掉与mysqlserver的链接。于是多少次php执行,就会多少次这样的创建和释放过程。频繁地创建和释放连接,比较耗费cpu资源。

长连接就可以避免每次请求都创建连接的开销,节省了时间和IO消耗。

长连接是提高了性能。不过还有一些细节的问题需要解决,即mysql发现一个链接长时间没有执行查询请求,就会自动断掉这个连接。

具体多长时间后断掉,有个timeout设置时间。通过sql:"show global variables like '%timeout';" 查看。

my.conf中的

wait_timeout=2880000

interactive_timeout = 2880000

当链接已经失效了,仍然去执行查询操作,一个明显的表现形式就是提示:MySQL server has gone away

启发:MySQL server has gone away这个信息是mysql服务器提示出来的呢?还是php的mysql扩展提示出来的呢?

据判断,肯定是应用程序服务器报出来的(php)。想一想,如果mysql都已经接到请求了,那么还出现什么链接不上。明明都已经链接上了。

既然mysql服务器都能够接受请求,那么还怎么处理不过来呢。

我们去百度搜索:MySQL server has gone away。从来没有看到java链接mysql出现这样的情况。如果是mysql 服务器报出来的。那么应该与应用程序无关。所以应该也会搜索到相关信息的。

据此判断,这是php抛出来的信息。php链接不上mysql了。

http://ronaldbradford.com/blog/sqlstatehy000-general-error-2006-mysql-server-has-gone-away-2013-01-02/

使用mysql_ping()函数能够检测与mysql服务器是不是链接状态。避免出现MySQL server has gone away。

每次执行查询前,先使用mysql_ping()去检测一下连接有没有断掉。如果断掉了。重新建立一次链接。

具体代码为:

if(mysql_ping()!=0){

//链接已经断开,需要重新建立链接

$this->conn = mysql_connect($ip,$user_name,$password);

}

小缺点是:每次都要去检测执行mysql_ping(),耗费资源。

一种改进办法是:根据mysql_query()的返回错误码来决定是不是要重新链接

$res = mysql_query($sql, $this->conn);

if($res===false){

if(mysql_errno($this->conn)==2006 || mysql_errno($this->conn)==2003){

//去检测一下与mysql服务器的链接是不是有效

if(mysql_ping()!=0){

//重新建立链接

}

}

}

备注:

2003对应的错误信息是,Can't connect to MySQL

2006 对应的错误信息是 MySQL server has gone away

思考:真正意义上自己实现的连接池,是长期与数据库服务器链接起链接的。如何建立起链接呢。就是定期发送心跳包。通过心跳包与服务器进行通信。

如果没有发送心跳包,则会被数据库服务器断掉这个链接。因为长时间没有通信的链接,要断掉。

待完善

MYSQL has gone away的解释:

http://database.51cto.com/art/201105/261107.htm

MySQL之长连接、短连接、连接池

当数据库服务器和客户端位于不同的主机时,就需要建立网络连接来进行通信.客户端必须使用数据库连接来发送命令和接收应答.数据.通过提供给客户端数据库的驱动指定连接字符串后,客户端就可以和数据库建立连接了. ...

PHP和mysql的长连接

关于 PHP MySQL 长连接.连接池的一些探索 PHP连接MySQL的方式,用的多的是mysql扩展.mysqli扩展.pdo_mysql扩展,是官方提供的.php的运行机制是页面执行完会释放所有 ...

[日常] MySQL数据库持久连接

2018年5月18日 记录: 数据库持久连接: 1.持久的数据库连接是指在脚本结束运行时不关闭的连接.当收到一个持久连接的请求时.PHP 将检查是否已经存在一个(前面已经开启的)相同的持久连接.如果存 ...

PHP-数据库长连接mysql_pconnect的细节

PHP的MySQL持久化连接,美好的目标,却拥有糟糕的口碑,往往令人敬而远之.这到底是为啥么.近距离观察后发现,这家伙也不容易啊,要看Apache的脸色,还得听MySQL指挥. 对于作为Apache模 ...

java原生程序redis连接(连接池/长连接和短连接)选择问题

最近遇到的连接问题我准备从重构的几个程序(redis和mysql)长连接和短连接,以及连接池和单连接等问题用几篇博客来总结下. 这个问题的具体发生在java原生程序和redis的交互中.这个问题对我最 ...

mysql长连接和短连接的问题 转

什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 通常的短连接操作步骤是: 连接->数据传输->关闭连接: 而长连接通常就是: 连接-&gt ...

mysql长连接和短连接的问题

什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态. 通常的短连接操作步骤是: 连接->数据传输->关闭连接: 而长连接通常就是: 连接-&gt ...

MySQL 线程池&连接池&长连接&短连接

线程池 简介 1.mysql每连接每线程,mysql都分配一个单独的线程,该线程处理客户端发来的所有命令 2.每个线程会占用一定的系统资源,线程数越多消耗的系统资源也越多 3.线程的创建和销毁有一定的 ...

mysql长连接

长连接是干嘛的:  它是做连接复用的: 在openresty中的lua-resty-mysql 里 connect方法去连接mysql时会去ngx_lua cosocket连接池中寻找是否有可用连接 ...

随机推荐

Xcode8控制台乱码的解决方式

Xcode8里边 Edit Scheme-> Run -> Arguments, 在Environment Variables里边添加 OS_ACTIVITY_MODE = Disable ...

【Java EE 学习 32 上】【JQuery】【选择器】

一.JQuery简介 1.JQuery是JavaScript库,封装了很多预定义对象和实用函数. 2.JQury的优势: (1)简洁,其宗旨就是写更少的代码做更多的事. (2)文档声明非常全面:htt ...

繁华模拟赛day8 字典序

/* 这个题要我们求一个字典序,字符串给出的顺序,会对字母的字典序前后相对顺序进行限定,如何用来表示这种限定,我们注意到这种一个之后接着一个,只有先输出他前面的才能输出他,很明显就是拓扑排序,最小方案 ...

静态工具类中使用注解注入service

转载:http://blog.csdn.net/p793049488/article/details/37819121 一般需要在一个工具类中使用@Autowired 注解注入一个service.但是 ...

USACO5.4-TeleCowmunication

题目大意:给出一个无向图,要求删除尽量少的点,使给定的2点间不再连通,并输出字典序最小的方案题型:图论-网络流此题难点在于建图,后面就是套网络流的模板.将点看成边,例如第i个点可以看成一条有向边&lt ...

hdu3656Fire station(DLX重复覆盖 + 二分)

题目请戳这里 题目大意:一个城市n个点,现在要建m个消防站,消防站建在给定的n个点中.求建m个消防站后,m个消防站要覆盖所有的n个点的覆盖半径最小. 题目分析:重复覆盖问题,DLX解决.不过要求覆盖半 ...

Windows 应用程序结构

Windows 应用程序结构

团队-爬取豆瓣电影TOP250-代码设计规范

队长博客:http://www.cnblogs.com/gengwenhao/

Oracle 连接到RMAN

set oracle_sid=orcl rman connect target sys/password@orcl;

TCP/IP协议---广播和多播及IGMP协议

老板找某个高层谈话,这是一对一形式.当老板叫来所有高层谈话,那么就变为了一对多.计算机网络中也是如此,当一个主机需要和更多机器对话时,就有了广播和多播这种形式. 广播和多播仅应用于UDP,它们对需将报 ...

mysql 长连接_使用mysql的长连接相关推荐

  1. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  2. php-fpm mysql 长连接_分析:PHP长连接的硬伤

    上篇博文<PHP的CURL报错的排查记录:短连接的成本真的很高啊>,我提到PHP长连接有个硬伤,那么硬伤到底在哪里呢? 我们写一个简易的memcache客户端来分析下这个问题,数据库等扩展 ...

  3. mysql数据库断开连接_解决mysql服务器在无操作超时主动断开连接的情况

    我们在使用mysql服务的时候,正常情况下,mysql的设置的timeout是8个小时(28800秒),也就是说,如果一个连接8个小时都没有操作,那么mysql会主动的断开连接,当这个连接再次尝试查询 ...

  4. mysql装完后navicat无法连接_重装mysql后导致Navicat连接失败

    今天重装了mysql数据库,然后再使用navicat去连接数据库的时候,一直报错 1251 Client does not support authentication protocol reques ...

  5. mysql数据库开启远程连接_安装MySQL数据库并开启远程访问

    一.安装MySQL数据库 MySQL安装在系统盘下(C:\Program Files),方便系统备份. 1.双击安装程序,勾选"I accept the license terms" ...

  6. mysql amp;amp;_浅析mysql交互式连接amp;非交互式连接

    交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tom ...

  7. mysql动态ip域名连接_用本地动态IP连接本地mysql

    一个问题已经困扰了我很久的问题今天终于解决了... 在用C++连接mysql时,用本地的动态IP加端口号连接本地的数据库mysql_real_connect(conn,"192.168.22 ...

  8. naticat连接mysql报错_「2509」Navicat连接mysql报错2509 - seo实验室

    2509 在Navicat中进行连接测试时,发现报错2509,还有乱码! mysql 2509 加密方式导致的报错,在8以后的版本默认的加密方式都改为了caching_sha2_password 此时 ...

  9. java 短连接转长连接_转:关于长连接和短连接

    TCP/IP通信程序设计的丰富多样性 刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程 序,据此一些人可能会认为TCP/IP编程很简单.其实不然, TCP/IP编程具有较为丰富的内容.其编 ...

  10. mysql8.0连接时长配置_初学者在Mysql8.0连接时的几个常见基本问题

    最近在做一些java web整合时使用的最新版Mysql8.0.3,发现Mysql连接中的几个问题,总结如下: package db;//自定义包名 import java.sql.*; public ...

最新文章

  1. delphi中checkcombobox最大长度_并行光信号传输中的信道间传播时间偏差
  2. Ubuntu16.04下Hadoop 2.7.3的安装与配置
  3. 优化SQL查询:如何写出高性能SQL语句
  4. android combobox控件,Android中的组合框
  5. Error: <spyOn> : handleError() method does not exist
  6. yxcms安装环境php,Windows7下PHP开发环境安装配置图文方法
  7. 苹果企业证书_苹果签名经常掉签原因大汇总
  8. 技术中台构建思路及进展_半年中台实践思考:落地中台,贵在其神,活用其形...
  9. Server.Variables属性大全(转载)
  10. Cesium.js学习第二天(立方体)
  11. 电脑怎么开护眼模式_心累!整天对着手机电脑,到底该怎么护眼啊啊啊
  12. 第二届(2021—2022学年)少年硅谷——全国青少年人工智能教育成果展示大赛
  13. sql自定义报表软件_SQL Server中的报表–自定义报表的外观
  14. RealSense D435——基本介绍
  15. 人民币对美元汇率中间价报6.7615元 下调73个基点
  16. SDL应用之三种字库
  17. 【ALM】POLARION ALM之需求管理解决方案介绍02
  18. 单片机C语言步进电机实训报告,步进电机控制实训报告.doc
  19. 美光科技:非挥发性存储器及快闪存储器才是归宿
  20. mac用户开发树莓派保姆级教程(一)系统的烧录

热门文章

  1. 【学习笔记】《网络安全态势感知》第三章:网络安全数据采集与融合
  2. 3DMax基础知识详解
  3. 2022高教社杯数学建模思路 - 案例:核方法(机器学习)
  4. 如何让电脑产生和输出特定分贝值的声音
  5. snipaste和PS工具
  6. e-target与e-currentTarget的区别
  7. 一文解析圆柱锂电外观缺陷检测问题
  8. matlab与zemax,如何在ZEMAX和MATLAB之间通信
  9. RHCE(DHCP报文)
  10. 78、无线网络设备知识大汇总,值得收藏学习!