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下10件你也许并不了解的事情
Sep 11 PHP
PHP采集利器 Snoopy 试用心得
Jul 03 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 PHP
php 强制下载文件实现代码
Oct 28 PHP
CodeIgniter启用缓存和清除缓存的方法
Jun 12 PHP
ThinkPHP惯例配置文件详解
Jul 14 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 PHP
PHP实现百度人脸识别
May 06 PHP
解决laravel id非自增 模型取回为0 的问题
Oct 11 PHP
php的无刷新操作实现方法分析
Feb 28 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下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
Discuz 模板引擎的封装类代码
2008/07/18 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
php实现socket推送技术的示例
2017/12/20 PHP
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
JS取文本框中最小值的简单实例
2013/11/29 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
JQuery自适应窗口大小导航菜单附源码下载
2015/09/01 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
django从请求到响应的过程深入讲解
2018/08/01 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
修理厂厂长岗位职责
2014/01/30 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
Javascript之datagrid查询详解
2021/09/15 Javascript
JS高级程序设计之class继承重点详解
2022/07/07 Javascript