国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

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

2024-05-04 23:25:11
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP中使用sleep造成mysql讀取失敗的案例和解決方法,如果遇到這個問題,可能會耗費你N久的時間,希望你能快速的搜索到這篇文章吧,需要的朋友可以參考下
 
 

近日,由于項目需求
需要用到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會導致單例類超時問題從而出現執行時間過長以后數據庫連接可能斷開問題,也就不能讀到數據庫信息!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青冈县| 南澳县| 承德市| 鸡泽县| 合江县| 论坛| 隆林| 庄浪县| 四子王旗| 乌兰察布市| 永仁县| 禄劝| 孝义市| 平乡县| 陵川县| 洛南县| 日土县| 平顶山市| 都安| 榆树市| 清新县| 勃利县| 眉山市| 凤冈县| 德保县| 泾川县| 河北省| 宁阳县| 施甸县| 莎车县| 同仁县| 正镶白旗| 内黄县| 高淳县| 琼中| 滦平县| 大荔县| 黑河市| 乃东县| 大荔县| 竹山县|