源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP中使用sleep造成mysql读取失败的案例和解决方法

  • 时间:2022-06-23 23:49 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP中使用sleep造成mysql读取失败的案例和解决方法
近日,由于项目需求 需要用到sleep函数定时从数据库取一堆数据出来去执行某些操作。 sleep等待的时间至少有一个小时以上 此前做过测试 用sleep函数去完成数小时后执行的操作是可行的   可邪门的问题出来了 程序用sleep后发现不能从数据库取到相应的信息 把sleep去掉 结果正常   郁闷中。。。 难道sleep影响读库操作!!! 于是为了方便测试 直接来个sleep(10) 十秒后执行 结果能从数据库读取信息   可为什么sleep()一个小时后不能读取信息呢? 为了测试方便我直接在sleep语句前读库一次,sleep后再读一次库 如:
[u]复制代码[/u] 代码如下:
<?php require_once('include.php'); // 读取数据库信息 $data = $db->getList(); print_r($data);   // 定时一个小时以后 sleep(3600);   // 再读取一次信息 $data = $db->getList(); print_r($data);   ?>
结果发现 第一次读库成功 第二次读库为空   于是再把sleep改成十秒钟后再测试一次
[u]复制代码[/u] 代码如下:
<?php require_once('include.php'); // 读取数据库信息 $data = $db->getList(); print_r($data);   // 定时十秒以后 sleep(10);   // 再读取一次信息 $data = $db->getList(); print_r($data);   ?>
以上结果 两次读库成功   为何一个小时读库失败,十秒钟却读库成功呢?? 我用的是单例数据库操作类 想起一个问题 会不会是数据库连接超时导致读库失败呢? 于是赶紧把此处读库操作改成现连
[u]复制代码[/u] 代码如下:
<?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会导致单例类超时问题从而出现执行时间过长以后数据库连接可能断开问题,也就不能读到数据库信息!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部