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


Posted in PHP onAugust 21, 2014

近日,由于项目需求
需要用到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 相关文章推荐
escape unescape的php下的实现方法
Apr 27 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
May 02 PHP
php 短链接算法收集与分析
Dec 30 PHP
PHP中SESSION使用中的一点经验总结
Mar 30 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
Aug 16 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
php jquery 多文件上传简单实例
Dec 23 PHP
php分页函数示例代码分享
Feb 24 PHP
php将文本文件转换csv输出的方法
Dec 31 PHP
PHP的cURL库简介及使用示例
Feb 06 PHP
php通过正则表达式记取数据来读取xml的方法
Mar 09 PHP
php统计数组不同元素的个数的实例方法
Sep 26 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 #PHP
ThinkPHP登录功能的实现方法
Aug 20 #PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 #PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 #PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
Aug 20 #PHP
PHP面向对象程序设计之接口用法
Aug 20 #PHP
从零开始学YII2框架(三)扩展插件yii2-gird
Aug 20 #PHP
You might like
PHP使用数组实现队列
2012/02/05 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
php生成curl命令行的方法
2015/12/14 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
2019/06/08 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
在vue项目中使用Jquery-contextmenu插件的步骤讲解
2019/01/27 jQuery
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
Python 多核并行计算的示例代码
2017/11/07 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
pytorch实现特殊的Module--Sqeuential三种写法
2020/01/15 Python
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
C#面试题
2016/05/06 面试题
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
2014新年寄语
2014/01/20 职场文书
新学期开学演讲稿
2014/05/24 职场文书
工作年限证明模板
2014/11/01 职场文书
普通员工辞职信范文
2015/05/12 职场文书
Python道路车道线检测的实现
2021/06/27 Python
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android