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 05 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
php示例详解Constructor Prototype Pattern 原型模式
Oct 15 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
浅谈PHP中try{}catch{}的使用方法
Dec 09 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
php array_map()函数实例用法
Mar 03 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
星际RPG字典
2020/03/04 星际争霸
Smarty安装配置方法
2008/04/10 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
巧用canvas
2017/01/21 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
2013/01/09 HTML / CSS
善意的谎言事例
2014/02/15 职场文书
工会趣味活动方案
2014/08/18 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
大学军训决心书
2015/02/05 职场文书
工作推荐信模板
2015/03/25 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
浅谈golang 中time.After释放的问题
2021/05/05 Golang
一篇文章弄懂Python中的内建函数
2021/08/07 Python
python可视化大屏库big_screen示例详解
2021/11/23 Python