亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

用PHP去實現數據庫查詢結果緩存

添加時間:2014-9-21 21:01:02  添加: 思海網絡 

有些時候我們希望減少對數據庫的查詢來提高程序的性能,因為這些數據不是經常變更的,而是會在很長一段時間內都不會變化,因此,我們每連接一次數據庫,都會把相應的結果用文件的形式保存起來。比如對于一個商城來說,我們的商品的數量可能會經常變,但是我們的商品類型以及商品的價格這些東西都會在很長的一段時間內不會變更,如果我們需要頻繁的查詢它們的時候,就可以使用數據庫緩存技術。

緩存的原因

第一點首先看我們普通情況下執行一條SQL查詢的開銷,我們先連接數據庫,然后準備SQL查詢,接下來發送查詢信息,然后取得返回結果,最后關閉數據庫連接,這樣的話會占用較多的資源,而我們的PHP程序也因為要等待從數據庫中查詢而使得響應速度變慢。

第二點就是在數據庫壓力較大時,比如高峰時段,這個時候數據庫壓力大,我們就需要把一些數據存儲到硬盤上,用文件的形式去讀取,這樣的做法是用我們的硬盤空間換取數據庫的壓力,這一點也要看機器性能。

第三點就是有些數據不著急去更新,比如上面提到的商品類型表,就不會太急于更新,比如我們的用戶的核心信息,一般也不會輕易去修改密碼什么的,這些內容可以選擇用文件的形式去緩存起來。

緩存的實現原理

第一點就是我們要確定何時強制更新內容,最常見的有三種方式就是第一個就是用時間去觸發,我們通常使用時間戳,第二點就是發現數據庫數據被修改,則自動更新緩存,第三個就是人工觸發,我們用人工的防水告訴信息系統強制更新緩存內容。

第二點就是我們可以通過使用serialize()函數來把從數據庫中取得的數據進行序列化,保存為本地文件,然后我們通過unserialize來從本地文件中讀取信息,所謂序列化就是用特定的方式去存儲PHP的值,它會保證部丟失這些值的類型和結構。

實戰演示

我們首先把從數據庫中讀取的數據存入本地文件,代碼如下:

mysqli_connect("localhost","root","","bbs");
//第二步設置相應的字符編碼
$setting = 'set names utf8';
mysqli_query($conn,$setting);
//第三步進行查詢
$sql = 'SELECT * FROM user';
$result = mysqli_query($conn,$sql);
//第四步把查詢結果轉化為一個數組
$rows = mysqli_num_rows($result);
$sqldata = array();
for($i = 0;$i <$rows;$i ++){
	$sqldata[] = mysqli_fetch_assoc($result);
}
//第五步把結果寫到緩存文件
$file = "sqlcache.txt";
$msg = serialize($sqldata);
$fp = fopen($file,"w");
fputs($fp,$msg);
fclose($fp);

然后我們可以打開這個sqlcache.txt文件,它的內容如下:

a:6:{i:0;a:4:{s:2:"id";s:1:"1";s:5:"level";s:1:"0";s:4:"name";s:6:"辛星";s:3:"pwd";s:32:"bd04fcc97578ce33ca5fb331f42bc375";}i:1;a:4:{s:2:"id";s:1:"2";s:5:"level";s:1:"1";s:4:"name";s:6:"小倩";s:3:"pwd";s:32:"61cb72858be523b9926ecc3d7da5d0c6";}i:2;a:4:{s:2:"id";s:1:"3";s:5:"level";s:1:"1";s:4:"name";s:6:"小楠";s:3:"pwd";s:32:"a3d2de7675556553a5f08e4c88d2c228";}i:3;a:4:{s:2:"id";s:1:"4";s:5:"level";s:1:"1";s:4:"name";s:6:"劉強";s:3:"pwd";s:32:"fcdb06a72af0516502e5fdccc9181ee0";}i:4;a:4:{s:2:"id";s:1:"5";s:5:"level";s:1:"1";s:4:"name";s:6:"星哥";s:3:"pwd";s:32:"866a6cafcf74ab3c2612a85626f1c706";}i:5;a:4:{s:2:"id";s:1:"6";s:5:"level";s:1:"1";s:4:"name";s:6:"辛勇";s:3:"pwd";s:32:"e93beb7663f3320eaa0157730d02dd0c";}}
然后我們可以寫一個程序從該文件中讀取數據,PHP代碼如下:

這樣我們的$result就是從本地的txt文件中讀取的數據,而不是從數據庫中讀取的數據了,即我們模擬了緩存的使用。

說明:

1.我們通過filemtime來得到文件的創建時間,可以用time來得到現在的時間,通過比較這個差值來決定是否要更新緩存。

2.我們可以用unlink來強制的刪除文件以清空數據緩存

關鍵字:PHP、數據庫、緩存

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站