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 相关文章推荐
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
PHP中如何判断AJAX提交的数据
Feb 05 PHP
php中长文章分页显示实现代码
Sep 29 PHP
PHP中设置时区,记录日志文件的实现代码
Jan 07 PHP
一个简单的PHP验证码实现代码
May 10 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
基于PHP微信红包的算法探讨
Jul 21 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
PHP数组内存利用率低和弱类型详细解读
Aug 10 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
Jun 12 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图片验证码实例
2014/03/21 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
解析jquery中的ajax缓存问题
2013/12/19 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
Python中的Classes和Metaclasses详解
2015/04/02 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
深入浅析Python的类
2018/06/22 Python
利用python画出折线图
2018/07/26 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
如何解决django-celery启动后迅速关闭
2019/10/16 Python
python输出数组中指定元素的所有索引示例
2019/12/06 Python
Django异步任务线程池实现原理
2019/12/17 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
农救科工作职责
2013/11/27 职场文书
中秋节寄语2015
2015/03/24 职场文书
如何写新闻稿
2015/07/18 职场文书
梳理总结Python开发中需要摒弃的18个坏习惯
2022/01/22 Python
Python语言中的数据类型-序列
2022/02/24 Python
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
Mysql数据库group by原理详解
2022/07/07 MySQL