PHP中使用sleep造成mysql读取失败的案例和解决方法

2015-01-24信息快讯网

这篇文章主要介绍了PHP中使用sleep造成mysql读取失败的案例和解决方法,如果遇到这个问题,可能会耗费你N久的时间,希望你能快速的搜索到这篇文章吧,需要的朋友可以参考下

近日,由于项目需求
需要用到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会导致单例类超时问题从而出现执行时间过长以后数据库连接可能断开问题,也就不能读到数据库信息!

thinkphp备份数据库的方法分享
js+php实现静态页面实时调用用户登陆状态的方法
php+mysql实现用户注册登陆的方法
php静态文件生成类实例分析
php采集内容中带有图片地址的远程图片并保存的方法
php读取csv数据保存到数组的方法
php使用google地图应用实例
php读取mssql的ntext字段返回值为空的解决方法
php连接oracle数据库及查询数据的方法
php从memcache读取数据再批量写入mysql的方法
PHP中使用xmlreader读取xml数据示例
php读取远程gzip压缩网页的方法
php提示Failed to write session data错误的解决方法
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
PHP中使用sleep函数实现定时任务实例分享
个人写的PHP验证码生成类分享
从零开始学YII2框架(六)高级应用程序模板
ThinkPHP登录功能的实现方法
PHP面向对象程序设计之类常量用法实例
PHP面向对象程序设计之接口用法
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
PHP文件缓存内容保存格式实例分析
Linux下PHP连接Oracle数据库
Win7 64位系统下PHP连接Oracle数据库
PHP中读取照片exif信息的方法
PHP框架Swoole定时器Timer特性分析
php操作XML、读取数据和写入数据的实现代码
Php连接及读取和写入mysql数据库的常用代码
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
PHP中的reflection反射机制测试例子
PHP的反射类ReflectionClass、ReflectionMethod使用实例
PHP中读取文件的8种方法和代码实例
©2014-2024 dbsqp.com