php连接mysql使用一段时间后连接数据库超时
单位的门户网站,用的PHP5.2.0+mysql5。该网站用了一段时间以后,页面就加载不出来了。查了下原因,是访问数据库记录文章信息的表的查询超时。用navicat工具访...
单位的门户网站,用的PHP5.2.0+mysql5。
该网站用了一段时间以后,页面就加载不出来了。查了下原因,是访问数据库记录文章信息的表的查询超时。用navicat工具访问数据库,可以连接,但是打开该文章表速度会比较慢,但是10秒左右也能打的开。该表数据量不多,才4000多条记录而已。如果页面上没有访问该表的语句,页面可以正常加载,就是说访问其他表都正常,就这一张表会超时。
这种情况出现了3次了,平均1个月多点就出一次,每次只能把服务器重启才有用,单独重启数据库都没效果。
不知道到底是什么原因啊。 展开
该网站用了一段时间以后,页面就加载不出来了。查了下原因,是访问数据库记录文章信息的表的查询超时。用navicat工具访问数据库,可以连接,但是打开该文章表速度会比较慢,但是10秒左右也能打的开。该表数据量不多,才4000多条记录而已。如果页面上没有访问该表的语句,页面可以正常加载,就是说访问其他表都正常,就这一张表会超时。
这种情况出现了3次了,平均1个月多点就出一次,每次只能把服务器重启才有用,单独重启数据库都没效果。
不知道到底是什么原因啊。 展开
4个回答
展开全部
开启下mysql的慢查询. 看看是否存在过多的慢查询语句. 具体开启方式可以百度
在数据库访问比较慢的情况下. 执行 show processlist 看下进程是否过多.
找出慢查询之后, 可以针对sql进行优化.
加加索引应该就能解决.
my.cnf 的配置可以参考网上的方案进行优化....
(按说...4000条数据根本就不是个问题....)
追问
要等到下次出问题估计还要等个把月,问题在于内网平台不能长时间断着,没有充足的时间给我排查问题。而且考虑只有这一张表会出问题,我都怀疑是不是apache的问题。
追答
一般不会是apache的问题. 看下php的error_log吧
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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()用来判断连接是否已经被断开了,若是断开了,关闭当前的链接,重新创建新的连接。
这样,只要发现连接被断开了,即可重新连接了。
经查发现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()用来判断连接是否已经被断开了,若是断开了,关闭当前的链接,重新创建新的连接。
这样,只要发现连接被断开了,即可重新连接了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没遇到过就单独一张表不能访问的情况,,,
话说你用navicat,需要花10秒,重启数据库无效,重启服务器就好了,估计问题出在服务器上。
话说你用navicat,需要花10秒,重启数据库无效,重启服务器就好了,估计问题出在服务器上。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
服务器不行了,再要简化你的程序调用数据库的次数,最好就能生成静态
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询