PHP基于文件存儲(chǔ)實(shí)現(xiàn)緩存的方法
本文實(shí)例講述了PHP基于文件存儲(chǔ)實(shí)現(xiàn)緩存的方法。分享給大家供大家參考。具體如下:
在一些數(shù)據(jù)庫(kù)數(shù)據(jù)記錄較大,但是服務(wù)器有限的時(shí)候,可能一條MySQL查詢就會(huì)好幾百毫秒,一個(gè)簡(jiǎn)單的頁(yè)面一般也有十幾條查詢,這個(gè)時(shí)候也個(gè)頁(yè)面加載下來(lái)基本要好幾秒了,如果并發(fā)量高的話服務(wù)器基本就癱瘓了,造成一個(gè)頁(yè)面很久也加載不下來(lái),這個(gè)時(shí)候我們可以使用文件緩存來(lái)緩解下MySQL的壓力,下面給個(gè)使用例子。
<?php //頁(yè)面業(yè)務(wù)邏輯處理,獲得結(jié)果 $objPage = new Page_IndexModel($arrParams); //一系列的業(yè)務(wù)邏輯放在了objPage中,調(diào)用process方法獲得結(jié)果集 $arrResult = $objPage->process(); //獲得結(jié)果后smarty賦值 $smarty->assign($arrResult); //輸出模板 $smarty->display(); ?>
現(xiàn)在我們用文件緩存來(lái)略過Page業(yè)務(wù)處理這一步
<?php
$cachFile = './index.php';
//緩存文件存在且時(shí)間不超過一小時(shí),則直接使用緩存的結(jié)果集,不在進(jìn)行任何的MySQL查詢了
if(file_exists($cacheFile) && time()-filemtime($cachFile) < 3600) {
//使用緩存中的結(jié)果
$arrResult = include($cachFile);
} else {
$objPage = new Page_IndexModel($arrParams);
$arrResult = $objPage->process();
$strContent = "<?php \n return ".var_export($arrResult, true)."\n;";
//將結(jié)果集緩存
file_put_contents($cachFile, $strContent);
}
//獲得結(jié)果后smarty賦值
$smarty->assign($arrResult);
//輸出模板
$smarty->display();
希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。
相關(guān)文章
php 刪除目錄下N分鐘前創(chuàng)建的所有文件的實(shí)現(xiàn)代碼
以下是對(duì)php中刪除目錄下N分鐘前創(chuàng)建的所有文件的實(shí)現(xiàn)代碼進(jìn)行了分析介紹,需要的朋友可以過來(lái)參考下2013-08-08
基于PHP實(shí)現(xiàn)JWT登錄鑒權(quán)的示例代碼
JWT(JSON Web Token)是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標(biāo)準(zhǔn)。本文將為大家介紹PHP如何實(shí)現(xiàn)JWT登錄鑒權(quán),需要的可以參考一下2022-04-04
PHP實(shí)現(xiàn)的登錄頁(yè)面信息提示功能示例
這篇文章主要介紹了PHP實(shí)現(xiàn)的登錄頁(yè)面信息提示功能,涉及php表單提交、數(shù)據(jù)庫(kù)查詢、判斷及session數(shù)據(jù)存儲(chǔ)等相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
php防注入,表單提交值轉(zhuǎn)義的實(shí)現(xiàn)詳解
本篇文章是對(duì)php防注入,表單提交值轉(zhuǎn)義的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

