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 相关文章推荐
图形数字验证代码
Oct 09 PHP
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
php使用正则表达式进行字符串搜索的方法
Mar 23 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
Nov 05 PHP
PHP生成随机数的方法总结
Mar 01 PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 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
ADODB的数据库封包程序库
2006/12/31 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
javascript计时器详解
2015/02/28 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
使用watch监听路由变化和watch监听对象的实例
2018/02/24 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
伦敦一卡通:The London Pass
2018/11/30 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
怎样声明一个匿名的内部类
2016/06/01 面试题
个人求职简历的自我评价
2013/10/19 职场文书
学术会议欢迎词
2014/01/09 职场文书
党员组织关系介绍信
2014/02/13 职场文书
班级读书活动总结
2014/06/30 职场文书
电话客服工作职责
2014/07/27 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
师德承诺书2015
2015/04/28 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android
Python中的socket网络模块介绍
2022/07/23 Python