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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
PHP curl使用实例
Jul 02 PHP
PHP定时执行任务实现方法详解(Timer)
Jul 30 PHP
WordPress中设置Post Type自定义文章类型的实例教程
May 10 PHP
PHP序列化操作方法分析
Sep 28 PHP
php微信公众平台示例代码分析(二)
Dec 06 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 PHP
PHP迭代器和迭代的实现与使用方法分析
Apr 19 PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 PHP
PHP通过GD库实现验证码功能示例
Feb 23 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中的正规表达式(二)
2006/10/09 PHP
php5.5新数组函数array_column使用
2013/07/08 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
2015/05/12 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
python使用PyQt5的简单方法
2019/02/27 Python
详解django2中关于时间处理策略
2019/03/06 Python
python使用matplotlib画柱状图、散点图
2019/03/18 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
pycharm配置git(图文教程)
2019/08/16 Python
python利用opencv保存、播放视频
2020/11/02 Python
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
Brydge英国:适用于Apple iPad和Microsoft Surface Pro的蓝牙键盘
2019/05/16 全球购物
C语言编程题
2015/03/09 面试题
工作睡觉检讨书
2014/02/25 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
学校师德师风整改措施
2014/10/27 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS
mysql 索引合并的使用
2021/08/30 MySQL
Mysql 文件配置解析介绍
2022/05/06 MySQL