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 zend 相对路径问题
Jan 12 PHP
php cookie 登录验证示例代码
Mar 16 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
php中在PDO中使用事务(Transaction)
May 14 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 PHP
PHP定时执行任务实现方法详解(Timer)
Jul 30 PHP
CI(Codeigniter)的Setting增强配置类实例
Jan 06 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 PHP
PHP关键特性之命名空间实例详解
May 06 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
Oct 13 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 PHP
PHP数组实际占用内存大小原理解析
Dec 11 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
加强版phplib的DB类
2008/03/31 PHP
php zend 相对路径问题
2009/01/12 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
javascript 操作符(~、&amp;、|、^、)使用案例
2014/12/31 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
Python通过select实现异步IO的方法
2015/06/04 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
优秀中专生推荐信
2013/11/17 职场文书
办公室内勤岗位职责范本
2013/12/09 职场文书
部队党性分析材料
2014/02/16 职场文书
幼儿园开学寄语
2014/04/03 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
博士生求职信
2014/07/06 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
公司与个人合作协议书
2016/03/19 职场文书
优秀员工演讲稿
2019/06/21 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL