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 db类库进行数据库操作
Mar 19 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
用php实现选择排序的解决方法
May 04 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
Oct 26 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
PHP使用glob函数遍历目录或文件夹的方法
Dec 16 PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 PHP
php设置页面超时时间解决方法
Sep 22 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
May 05 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
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
ThinkPHP3.1新特性之对页面压缩输出的支持
2014/06/19 PHP
Linux下php5.4启动脚本
2014/08/03 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
php商品对比功能代码分享
2015/09/24 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
javascript生成/解析dom的CDATA类型的字段的代码
2007/04/22 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
jQuery实现简单复制json对象和json对象集合操作示例
2018/07/09 jQuery
vue 巧用过渡效果(小结)
2018/09/22 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
Django模板变量如何传递给外部js调用的方法小结
2017/07/24 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
python生成ppt的方法
2018/06/07 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
对Python3之方法的覆盖与super函数详解
2019/06/26 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
企业人事任命书
2014/06/05 职场文书
节约用水的口号
2014/06/20 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
村创先争优活动总结
2014/08/28 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
毕业季聚会祝酒词!
2019/07/04 职场文书
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server
html,css,javascript是怎样变成页面的
2023/05/07 HTML / CSS