在PHP中利用睡眠无法对mysql进行读取如何解决

今天就跟大家聊聊有关在PHP中利用sleep无法对mysql进行读取如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

近日,由于项目需求
需要用到sleep函数定时从数据库取一堆数据出来去执行某些操作。
sleep等待的时间至少有一个小时以上
此前做过测试
用sleep函数去完成数小时后执行的操作是可行的
 
可邪门的问题出来了
程序用sleep后发现不能从数据库取到相应的信息
把sleep去掉
结果正常
 
郁闷中。。。
难道sleep影响读库操作!!!
于是为了方便测试
直接来个sleep(10) 十秒后执行
结果能从数据库读取信息
 
可为什么sleep()一个小时后不能读取信息呢?
为了测试方便我直接在sleep语句前读库一次,sleep后再读一次库
如:

代码如下:


<?php
require_once('include.php');
//读取数据库信息
$data=https://www.yisu.com/zixun/$db->getList();
print_r($data);
 
//定时一个小时以后
sleep(3600);
 
//再读取一次信息
$data=https://www.yisu.com/zixun/$db->getList();
print_r($data);
 
?>


结果发现
第一次读库成功
第二次读库为空
 
于是再把sleep改成十秒钟后再测试一次

代码如下:


<?php
require_once('include.php');
//读取数据库信息
$data=https://www.yisu.com/zixun/$db->getList();
print_r($data);
 
//定时十秒以后
sleep(10);
 
//再读取一次信息
$data=https://www.yisu.com/zixun/$db->getList();
print_r($data);
 
?>


以上结果
两次读库成功
 
为何一个小时读库失败,十秒钟却读库成功呢??
我用的是单例数据库操作类
想起一个问题
会不会是数据库连接超时导致读库失败呢?
于是赶紧把此处读库操作改成现连

代码如下:


<?php
require_once('include.php');
//读取数据库信息
$data=https://www.yisu.com/zixun/getList();
print_r($data);
 
//定时一个小时以后
sleep(3600);
 
//再读取一次信息
$data=https://www.yisu.com/zixun/getList();
print_r($data);
 
//读取数据库信息
function getList(){
        pdo美元=new pdo (& # 39; mysql:主机=localhost; dbname=测试# 39;,& # 39;根# 39;,& # 39;根# 39;);
,,,,,,,结果=美元pdo→查询(& # 39;从表选择* # 39;);
,,,,,,,返回结果→美元fetchAll (PDO:: FETCH_ASSOC);
}
?在


测试成功! !
原来的睡眠会导致单例类超时问题从而出现执行时间过长以后数据库连接可能断开问题,也就不能读到数据库信息!

在PHP中利用睡眠无法对mysql进行读取如何解决