亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP中使用sleep造成mysql讀取失敗的案例和解決方法

 更新時(shí)間:2014年08月21日 08:47:57   投稿:junjie  
這篇文章主要介紹了PHP中使用sleep造成mysql讀取失敗的案例和解決方法,如果遇到這個(gè)問(wèn)題,可能會(huì)耗費(fèi)你N久的時(shí)間,希望你能快速的搜索到這篇文章吧,需要的朋友可以參考下

近日,由于項(xiàng)目需求
需要用到sleep函數(shù)定時(shí)從數(shù)據(jù)庫(kù)取一堆數(shù)據(jù)出來(lái)去執(zhí)行某些操作。
sleep等待的時(shí)間至少有一個(gè)小時(shí)以上
此前做過(guò)測(cè)試
用sleep函數(shù)去完成數(shù)小時(shí)后執(zhí)行的操作是可行的
 
可邪門(mén)的問(wèn)題出來(lái)了
程序用sleep后發(fā)現(xiàn)不能從數(shù)據(jù)庫(kù)取到相應(yīng)的信息
把sleep去掉
結(jié)果正常
 
郁悶中。。。
難道sleep影響讀庫(kù)操作?。。?br /> 于是為了方便測(cè)試
直接來(lái)個(gè)sleep(10) 十秒后執(zhí)行
結(jié)果能從數(shù)據(jù)庫(kù)讀取信息
 
可為什么sleep()一個(gè)小時(shí)后不能讀取信息呢?
為了測(cè)試方便我直接在sleep語(yǔ)句前讀庫(kù)一次,sleep后再讀一次庫(kù)
如:

復(fù)制代碼 代碼如下:

<?php
require_once('include.php');
// 讀取數(shù)據(jù)庫(kù)信息
$data = $db->getList();
print_r($data);
 
// 定時(shí)一個(gè)小時(shí)以后
sleep(3600);
 
// 再讀取一次信息
$data = $db->getList();
print_r($data);
 
?>

結(jié)果發(fā)現(xiàn)
第一次讀庫(kù)成功
第二次讀庫(kù)為空
 
于是再把sleep改成十秒鐘后再測(cè)試一次
復(fù)制代碼 代碼如下:

<?php
require_once('include.php');
// 讀取數(shù)據(jù)庫(kù)信息
$data = $db->getList();
print_r($data);
 
// 定時(shí)十秒以后
sleep(10);
 
// 再讀取一次信息
$data = $db->getList();
print_r($data);
 
?>

以上結(jié)果
兩次讀庫(kù)成功
 
為何一個(gè)小時(shí)讀庫(kù)失敗,十秒鐘卻讀庫(kù)成功呢??
我用的是單例數(shù)據(jù)庫(kù)操作類(lèi)
想起一個(gè)問(wèn)題
會(huì)不會(huì)是數(shù)據(jù)庫(kù)連接超時(shí)導(dǎo)致讀庫(kù)失敗呢?
于是趕緊把此處讀庫(kù)操作改成現(xiàn)連
復(fù)制代碼 代碼如下:

<?php
require_once('include.php');
// 讀取數(shù)據(jù)庫(kù)信息
$data = getList();
print_r($data);
 
// 定時(shí)一個(gè)小時(shí)以后
sleep(3600);
 
// 再讀取一次信息
$data = getList();
print_r($data);
 
// 讀取數(shù)據(jù)庫(kù)信息
function getList(){
        $pdo = new PDO('mysql:host=localhost;dbname=test','root','root');
        $result = $pdo->query('select * from tables');
        return $result->fetchAll(PDO::FETCH_ASSOC);
}
?>

測(cè)試成功!!
原來(lái)sleep會(huì)導(dǎo)致單例類(lèi)超時(shí)問(wèn)題從而出現(xiàn)執(zhí)行時(shí)間過(guò)長(zhǎng)以后數(shù)據(jù)庫(kù)連接可能斷開(kāi)問(wèn)題,也就不能讀到數(shù)據(jù)庫(kù)信息!

相關(guān)文章

最新評(píng)論