mysql连接的问题

本文探讨了在使用PHP进行后台业务逻辑处理时遇到的数据库连接问题,特别是在需要长时间保持连接的情况下。文章列举了一些常见问题,如连接超时导致程序崩溃,并提供了调整连接超时时间和重连机制等解决方案。

在使用php处理数据库的时候,我们会遇到各种问题,比如没有权限之类的,这些问题只要根据错误提示进行改正就好了;然而在使用后台脚本进行业务逻辑的处理的时候,一般由于需要处理的数据量比较大,因此处理的时间也就比较长,这个时候数据库的连接时间的重要性就体现出来了。

与数据库连接的参数,在mysql里面主要是几个Timeout配置,例如wait_timeout, interval_timeout, connnect_timeout, 这些参数的详细说明可以从网上获得,我就不直接COPY啦。平时我们对mysql做优化的时候会将这些值进行修改,减少sleep的连接。比如设置成为10s等,当然这对前端的php处理不会产生任何影响,因为你不可能让你的一个页面处理需要用户等待十秒以上。然而这些对于后端的长时间的连接会产生一些意想不到的事情。

 

这里将我自己遇到的一些问题在这里罗列一下:

1.主要是在整个程序中使用唯一的连接,而这个连接需要维持的时间至少在半个小时到一个小时,这个过程中就出现了连接时间不够,自动断掉,而这个时候程序获取连接失败,或者先前的连接存在,但是已经是一个失效的连接资源,于是程序在这个地方崩溃。

2.下面也是遇到的一个问题:直接写上错误的信息:

PHP Warning: mysql_connect(): Lost connection to MySQL server at 'reading initial communication packet', system error: 111

 

分析一下问题的产生,这里只是概括一下,对于出现的错误,可能会根据你的程序写法不同而不同,比如程序里面还出现过嵌套递归超过一百次,也是因为每次连接都连不上。

这样问题的出现,解决办法就是将timeout时间设置的长一点; 另外再执行的过程中可以将失效的连接关闭,重新请求生成新的连接。

 

这里有一点也需要说明:在使用memcache的时候,也是因为长时间使用一个实例(自己对memcahe操作做了封装),容易导致操作失败,这个时候我们可以多生成几个,或者使用循环执行三次。

大家如果碰到相似的问题,可以和我交流一下

 

转载于:https://www.cnblogs.com/kucongzhi/archive/2010/09/03/1816734.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值