PHP中使用sleep造成mysql读取失败的案例和解决方法,sleepmysql_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP中使用sleep造成mysql读取失败的案例和解决方法,sleepmysql_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3336字,纯文字阅读大概需要5分钟。
内容图文
![PHP中使用sleep造成mysql读取失败的案例和解决方法,sleepmysql_PHP教程](/upload/InfoBanner/zyjiaocheng/184/79283d92916c44dbb3e4e6c9304ed2db.jpg)
PHP中使用sleep造成mysql读取失败的案例和解决方法,sleepmysql
近日,由于项目需求
需要用到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会导致单例类超时问题从而出现执行时间过长以后数据库连接可能断开问题,也就不能读到数据库信息!
应该是有些特殊字符没处理,你用addslashes()转换一下。
如果实在不行,就用base64_encode()加密一下再存。
用的时候取出来用base64_decode()解密就行了。
sql语句这样写select name for 表名 where...
然后读取第0个
或者你可以用函数
mysql_fetch_array
例子 2. mysql_fetch_array 使用 MYSQL_NUM
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf ("ID: %s Name: %s", $row[0], $row[1]);
}
mysql_free_result($result);
?>
例子 3. mysql_fetch_array 使用 MYSQL_ASSOC
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
printf ("ID: %s Name: %s", $row["id"], $row["name"]);
}
mysql_free_result($result);
?>
例子 4. mysql_fetch_array 使用 MYSQL_BOTH
<?php
mysql_connect("localhost", "mysql_user", "mysql_password") or
die("Could not connect: " . mysql_error());
mysql_select_db("mydb");
$result = mysql_query("SELECT id, name FROM mytable");
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
printf ("ID: %s Name: %s",......余下全文>>
http://www.bkjia.com/PHPjc/867253.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/867253.htmlTechArticlePHP中使用sleep造成mysql读取失败的案例和解决方法,sleepmysql 近日,由于项目需求 需要用到sleep函数定时从数据库取一堆数据出来去执行某些...
内容总结
以上是互联网集市为您收集整理的PHP中使用sleep造成mysql读取失败的案例和解决方法,sleepmysql_PHP教程全部内容,希望文章能够帮你解决PHP中使用sleep造成mysql读取失败的案例和解决方法,sleepmysql_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。