php连接mysql使用一段时间后连接数据库超时

单位的门户网站,用的PHP5.2.0+mysql5。该网站用了一段时间以后,页面就加载不出来了。查了下原因,是访问数据库记录文章信息的表的查询超时。用navicat工具访... 单位的门户网站,用的PHP5.2.0+mysql5。
该网站用了一段时间以后,页面就加载不出来了。查了下原因,是访问数据库记录文章信息的表的查询超时。用navicat工具访问数据库,可以连接,但是打开该文章表速度会比较慢,但是10秒左右也能打的开。该表数据量不多,才4000多条记录而已。如果页面上没有访问该表的语句,页面可以正常加载,就是说访问其他表都正常,就这一张表会超时。
这种情况出现了3次了,平均1个月多点就出一次,每次只能把服务器重启才有用,单独重启数据库都没效果。
不知道到底是什么原因啊。
展开
 我来答
天街夜雨
推荐于2016-09-29 · TA获得超过641个赞
知道小有建树答主
回答量:759
采纳率:0%
帮助的人:663万
展开全部
  • 开启下mysql的慢查询. 看看是否存在过多的慢查询语句. 具体开启方式可以百度 

  • 在数据库访问比较慢的情况下. 执行 show processlist 看下进程是否过多.

 

找出慢查询之后, 可以针对sql进行优化.

加加索引应该就能解决.

my.cnf 的配置可以参考网上的方案进行优化....

(按说...4000条数据根本就不是个问题....)

追问
要等到下次出问题估计还要等个把月,问题在于内网平台不能长时间断着,没有充足的时间给我排查问题。而且考虑只有这一张表会出问题,我都怀疑是不是apache的问题。
追答
一般不会是apache的问题. 看下php的error_log吧
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
圣鸾OJ
推荐于2018-05-13 · TA获得超过1629个赞
知道小有建树答主
回答量:1136
采纳率:96%
帮助的人:113万
展开全部
php连接mysql读写数据,过一天就不work了。
经查发现mysql connection默认的超时时间为8小时。如果想让这个连接永久不超时,该怎么办呢?
有朋友说在mysql配置文件my.cfg中[mysqld]中添加
wait _timeout =31536000 (这里的这个数字的单位是秒,31536000秒=365天,这也是可设置的最大值)

这个办法不是最好的,因为这个"一年" != 永久..如何才能让该连接永久不超时呢?

比较完美的解决方法:

复制代码代码如下:
function reconnect(){
if (!mysql_ping ($this->db)) {
//here is the major trick, you have to close the connection (even though its not currently working) for it to recreate properly.
mysql_close($this->db);
$this->connect();
}
}

其中的mysql_ping()用来判断连接是否已经被断开了,若是断开了,关闭当前的链接,重新创建新的连接。
这样,只要发现连接被断开了,即可重新连接了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
心雨九
2013-08-26 · TA获得超过127个赞
知道小有建树答主
回答量:238
采纳率:0%
帮助的人:149万
展开全部
没遇到过就单独一张表不能访问的情况,,,
话说你用navicat,需要花10秒,重启数据库无效,重启服务器就好了,估计问题出在服务器上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dankeyhappy
2013-08-26 · TA获得超过636个赞
知道小有建树答主
回答量:1124
采纳率:0%
帮助的人:257万
展开全部
服务器不行了,再要简化你的程序调用数据库的次数,最好就能生成静态
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式