手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP中使用sleep造成mysql读取失败的案例和解决方法
PHP中使用sleep造成mysql读取失败的案例和解决方法
摘要:近日,由于项目需求需要用到sleep函数定时从数据库取一堆数据出来去执行某些操作。sleep等待的时间至少有一个小时以上此前做过测试用sle...

近日,由于项目需求

需要用到sleep函数定时从数据库取一堆数据出来去执行某些操作。

sleep等待的时间至少有一个小时以上

此前做过测试

用sleep函数去完成数小时后执行的操作是可行的

可邪门的问题出来了

程序用sleep后发现不能从数据库取到相应的信息

把sleep去掉

结果正常

郁闷中。。。

难道sleep影响读库操作!!!

于是为了方便测试

直接来个sleep(10) 十秒后执行

结果能从数据库读取信息

可为什么sleep()一个小时后不能读取信息呢?

为了测试方便我直接在sleep语句前读库一次,sleep后再读一次库

如:

复制代码 代码如下:

<?php

require_once('include.php');

// 读取数据库信息

$data = $db->getList();

print_r($data);

// 定时一个小时以后

sleep(3600);

// 再读取一次信息

$data = $db->getList();

print_r($data);

?>

结果发现

第一次读库成功

第二次读库为空

于是再把sleep改成十秒钟后再测试一次

复制代码 代码如下:

<?php

require_once('include.php');

// 读取数据库信息

$data = $db->getList();

print_r($data);

// 定时十秒以后

sleep(10);

// 再读取一次信息

$data = $db->getList();

print_r($data);

?>

以上结果

两次读库成功

为何一个小时读库失败,十秒钟却读库成功呢??

我用的是单例数据库操作类

想起一个问题

会不会是数据库连接超时导致读库失败呢?

于是赶紧把此处读库操作改成现连

复制代码 代码如下:

<?php

require_once('include.php');

// 读取数据库信息

$data = getList();

print_r($data);

// 定时一个小时以后

sleep(3600);

// 再读取一次信息

$data = getList();

print_r($data);

// 读取数据库信息

function getList(){

$pdo = new PDO('mysql:host=localhost;dbname=test','root','root');

$result = $pdo->query('select * from tables');

return $result->fetchAll(PDO::FETCH_ASSOC);

}

?>

测试成功!!

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

【PHP中使用sleep造成mysql读取失败的案例和解决方法】相关文章:

php截取指定2个字符之间字符串的方法

PHP获取文件行数的方法

PHP4与PHP3中一个不兼容问题的解决方法

PHP获取当前日期和时间及格式化方法参数

PHP应用分页显示制作详细讲解

PHP中路径问题的解决方案

在php中使用sockets:从新闻组中获取文章

PHP中的事务使用实例

php curl 获取https请求的2种方法

PHP中的魔术方法总结和使用实例

精品推荐
分类导航