在PHP中用sleep导致诡异事件

近日,由于项目需求

需要用到sleep函数定时从数据库取一堆数据出来去执行某些操作。

sleep等待的时间至少有一个小时以上

此前做过测试

用sleep函数去完成数小时后执行的操作是可行的

可邪门的问题出来了

程序用sleep后发现不能从数据库取到相应的信息

把sleep去掉

结果正常

郁闷中。。。

难道sleep影响读库操作!!!

于是为了方便测试

直接来个sleep(10) 十秒后执行

结果能从数据库读取信息

可为什么sleep()一个小时后不能读取信息呢?

为了测试方便我直接在sleep语句前读库一次,sleep后再读一次库

如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

require_once('include.php');

// 读取数据库信息

$data = $db->getList();

print_r($data);

// 定时一个小时以后

sleep(3600);

// 再读取一次信息

$data = $db->getList();

print_r($data);

?>

结果发现

第一次读库成功

第二次读库为空

于是再把sleep改成十秒钟后再测试一次

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

require_once('include.php');

// 读取数据库信息

$data = $db->getList();

print_r($data);

// 定时十秒以后

sleep(10);

// 再读取一次信息

$data = $db->getList();

print_r($data);

?>

以上结果

两次读库成功

为何一个小时读库失败,十秒钟却读库成功呢??

我用的是单例数据库操作类

想起一个问题

会不会是数据库连接超时导致读库失败呢?

于是赶紧把此处读库操作改成现连

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<?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中用sleep导致诡异事件相关推荐

  1. AutoEventWireup=false导致Page_Load事件未执行

    在调试代码时发现Page_Load事件未执行,找了半天原因,原来是AutoEventWireup设置成false导致.   转一篇关于AutoEventWireup的帖子. asp.net(AutoE ...

  2. 一个线程罢工的诡异事件

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 背景 事情(事故)是这样的,突然收到报警,线上某个应用里业务逻辑没 ...

  3. 关于鼠标移动太快导致moseleave事件不触发的问题

    描述: 我做的是一个table的编辑功能,当移入某行的时候展示编辑状态,在移出某行的时候显示的是原始状态,此时遇到一种情况,就是 当mousenter事件触发之后,由于鼠标移动得太快,同一个tr上绑定 ...

  4. 生产问题:一个线程罢工的诡异事件

    事情(事故)是这样的,突然收到报警,线上某个应用里业务逻辑没有执行,导致的结果是数据库里的某些数据没有更新. 虽然是前人写的代码,但作为 Bugmaker&killer 只能咬着牙上了. 因为 ...

  5. ajax绑定事件页面重复提交,Ajax局部更新导致JS事件重复触发问题的解决方法

    如果在页面中包含一个ajax更新的列表,那么需要小心非动态更新部分的事件处理. 以带有公共工具栏的列表界面为例: | Menu1 | Menu2 --------------------------- ...

  6. z-index诡异事件之背锅侠

    第一次在这上面发文哈,平时都只是在这里学(fu)习(zhi),准备记录一下我踩过和正在踩的坑吧. 今天找了半天小程序选择框的组件,奈何并没有找到官方的组件,就准备自己写(fu zhi)一个.结果写遮罩 ...

  7. 小米传送门导致OnTouch事件中MotionEvent.ACTION_UP不执行

    最近项目做了一个需求,手指按住一个控件拖动显示另外一个控件,拖动停止后隐藏那个控件. 没想到在小米手机里面翻车了: 小米手机有个传送门 在你长按的时候他会弹出来选词搜索 这个和我的功能冲突了 我监听不 ...

  8. 解决input事件监听拼音输入法导致高频事件

    1.业务场景 在文本框中输入内容,执行查询接口,但遇到一个问题,当用拼音打字写汉字去搜索的时候,会输入一些字母拼成汉字,怎么能监听等拼音文字输入完成后再触发文本框监听事件 2.解决方案 在js中有两个 ...

  9. EventTrigger接管所有事件导致其他事件无法触发

    解决: using UnityEngine; using System.Collections; using UnityEngine.EventSystems; public class EventT ...

  10. c#中用鼠标点击事件实现抠图

    功能:读取图片到picturebox中,用鼠标左键点击 选点,右键点击时,开始绘制多边形. 软件语言:opencvsharp,C# private void pictureBox1_Paint(obj ...

最新文章

  1. 【cocos2d-x】游戏构成要素②----使用多个层
  2. RxJava2 / RxAndroid2的merge操作合并多个Observable
  3. 中兴手机数据通道打不开_我用的是中兴手机,里面有流量,但是数据开不了,应该怎么办呢?...
  4. .NET Framework介绍
  5. 阿里技术专家:数据一致性检测的应用场景与最佳实践
  6. C++描述杭电OJ 2000. ASCII码排序 ||
  7. nginx 的 rewrite 模块
  8. 使用android日志工具
  9. 常用的MySQL命令大全(完整版、太到位了)
  10. Python实现繁体字和简体字的相互转换
  11. 计算机圆半径计算公式,圆半径计算公式是什么?
  12. pwnable.kr_mistake
  13. prod和probor在matlab,智能控制讲义第六章Matlab在模糊控制中的应用.
  14. 试题 算法训练 无聊的逗 - 蓝桥杯
  15. InfiniBand RDMA
  16. 红牛饮料:借力蓝凌EKP 创造超乎想象的管理支撑能量
  17. 液晶显示屏的C语言编码,液晶屏代码单独文件
  18. ppt最全的网站,你想要的应有尽有,模板素材图片都包含在内!
  19. 通过 Win + R 默认以管理员身份打开 cmd
  20. java epson指令集_EPSON机械手 SPEL+语言指令集

热门文章

  1. java flip_GitHub - bowen903/ViewFlipAnimator: 一种超简单纯Java实现的卡片翻转效果
  2. Datawhale组队学习周报(第031周)
  3. 异常来自nbsp;HRESULT:0x80040215
  4. PCB十六大可靠性测试,看看您的板是否经得起测试?
  5. win10微软账户无法连接服务器,Win10系统Microsoft微软帐户无法登陆的解决方法
  6. 搜狐老矣,尚能饭否?
  7. 数字人体”视觉挑战赛-宫颈癌风险智能诊断
  8. java接入支付宝api实现支付宝手机扫码登录
  9. LeetCode 781 森林中的兔子 题解
  10. regedit是什么意思_regedit是什么意思?