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写的采集程序
Mar 16 PHP
完美解决dedecms中的[html][/html]和[code][/code]问题
Mar 20 PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 PHP
php 用checkbox一次性删除多条记录的方法
Feb 23 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
在Debian系统下配置LNMP的教程
Jul 09 PHP
详解php中反射的应用
Mar 15 PHP
Yii视图CGridView实现操作按钮定义地址示例
Jul 14 PHP
深入浅析Yii admin的权限控制
Aug 31 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
详解基于Bootstrap扁平化的后台框架Ace
2015/11/27 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 jQuery
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
vxe-table vue table 表格组件功能
2019/05/26 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
[48:32]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs VG
2018/04/01 DOTA
Python读取网页内容的方法
2015/07/30 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
企划经理的岗位职责
2013/11/17 职场文书
触摸春天教学反思
2014/02/03 职场文书
成品库仓管员岗位职责
2014/04/06 职场文书
竞聘自述材料
2014/08/25 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
党员转正党支部意见
2015/06/02 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL