电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

PHP程序加速探索之緩存輸出

瀏覽:31日期:2024-02-06 13:11:01

內(nèi)容緩存輸出 PEAR cache

接下來我們開始探索更常用的緩存技術(shù),這也是本文的重點(diǎn)部份。首先我們使用PEAR中的cache包。PEAR可以將內(nèi)容緩存于文件,數(shù)據(jù)庫或者內(nèi)存中,我們以文件為例。

下面是一個沒有使用緩存的PHP小程序:

pear_content_cache1.php<?php  echo '這是內(nèi)容。<P>';  echo '當(dāng)前時間是' . date('M-d-Y H:i:s A', time()) . '<BR>'; ?>

上面這個程序非常簡單,現(xiàn)在我們?yōu)槠浼由暇彺妗?/P>

pear_content_cache2.php

<?php  require_once 'Cache/Output.php';

 //設(shè)置緩存目錄,必須是可寫的  $cacheDir = './pear_cache';  $cache = new Cache_Output('file',array('cache_dir' => $cacheDir));

 //如果nocache變量為空,使用緩存中的內(nèi)容  //如果想獲得最新的內(nèi)容,就要賦值給nocache變量  if (empty($_REQUEST['nocache']))  { // 建立一個獨(dú)一的cache標(biāo)識 // 請求+Cookie信息 $cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));  }  else  { //想獲得最新的內(nèi)容,ID為空 $cache_id = null;  }

 //看cache ID對應(yīng)的緩存內(nèi)容是否可用  if ($content = $cache->start($cache_id))  { //緩存已存在,直接輸出,并結(jié)束腳本 echo $content; exit();  }

 // 緩存中不存在該內(nèi)容,生成新內(nèi)容并寫入緩存  echo '這是內(nèi)容。<P>';  echo '當(dāng)前時間是' . date('M-d-Y H:i:s A', time()) . '<BR>';

 // 把內(nèi)容寫入緩存  echo $cache->end(); ?>

分別刷新這兩個文件,你會發(fā)現(xiàn)pear_content_cache1.php中的“當(dāng)前時間是”這一行中的時間是隨著刷新而變化的,而pear_content_cache2.php中的這一行則不變。這是由于pear_content_cache2.php使用了緩存,將用戶請求的內(nèi)容存入靜態(tài)文件中。當(dāng)用戶再次請求時,它直接從文件中輸出,而不需要用程序動態(tài)生成內(nèi)容。

對于pear_content_cache2.php,如果用戶想要讀取最新的信息,而不是緩存中成舊的信息。那么可以用http://…/pear_content_cache2.php?nocache=1 來訪問,這將禁用緩存功能。刷新一下看看,你將發(fā)現(xiàn)時間會隨之變化。

總結(jié)一下PEAR內(nèi)容緩存類的使用:

1.包含PEAR包 要注意設(shè)對路徑。 2.包含Output.php中的cache類

require_once 'Cache/Output.php';

3.設(shè)置緩存目錄

$cacheDir = './pear_cache';

確認(rèn)這個目錄是可寫的。Cache數(shù)據(jù)將會寫入這個目錄的子目錄中。

4.建立一個輸出緩存對象

$cache = new Cache_Output('file',array('cache_dir' => $cacheDir));

第一個參數(shù)表示我們使用基于“文件”方式的緩存,第二個參數(shù)是一個與緩存目錄相關(guān)聯(lián)的數(shù)組。

5.產(chǎn)生一個唯一的cache ID

$cache_id = $cache->generateID(array('url' => $_REQUEST,'post' =>$_POST,'cookies' => $HTTP_COOKIE_VARS));

這里$cache對象的generateID()方法通過提供一個信息數(shù)組(URL, HTTP POST data, 和 HTTP cookie)來獨(dú)一無二地標(biāo)識這個請求,與其它請求區(qū)分開來。

6.增加一個邏輯判斷語句看是否對應(yīng)于cacheID的緩存數(shù)據(jù)是否已經(jīng)存在,如果存在,獲取數(shù)據(jù)并結(jié)束腳本。

if ($content = $cache->start($cache_id)) {  echo $content;  exit(); }

7. 將產(chǎn)生內(nèi)容的代碼放在以上邏輯語句之后,并結(jié)束使用cache對象。

echo $cache->end();

函數(shù)緩存輸出 PEAR cache

PEAR除了可以對輸出的內(nèi)容進(jìn)行緩存處理外,還可以將對某個函數(shù)的調(diào)用結(jié)果緩存起來。這是個很有趣的功能,如果你的程序要頻繁使用到某個函數(shù),而且調(diào)用的結(jié)果相同的話,我建議你不妨試試,特別是當(dāng)這個函數(shù)運(yùn)行起來比較慢的時候。

下面我們實(shí)現(xiàn)對一個執(zhí)行起來很慢的函數(shù)slowFunction()的緩沖調(diào)用。

<?php  require_once 'Cache/Function.php';

 $cacheDir = './pear_cache/';  $cache = new Cache_Function('file',array('cache_dir' => $cacheDir));  $arr = array('蘋果', '梨','西瓜');  $cache->call('slowFunction', $arr);  echo '<BR>';

 $arr = array('蘋果', '梨','西瓜');  slowFunction($arr);

 function slowFunction($arr = null)  { echo '一個執(zhí)行起來很慢的函數(shù) :( <br>'; echo '當(dāng)前時間是 ' . date('M-d-Y H:i:s A', time()) . '<br>'; foreach ($arr as $fruit) {  echo '我吃了一個 $fruit <br>'; }  ) ?>

以下是示例的腳本執(zhí)行結(jié)果:

一個執(zhí)行起來很慢的函數(shù)

當(dāng)前時間是 Jul-28-2004 17:15:57 PM我吃了一個 蘋果 我吃了一個 梨 我吃了一個 西瓜

一個執(zhí)行起來很慢的函數(shù) :( 當(dāng)前時間是 Jul-28-2004 17:17:55 PM我吃了一個 蘋果 我吃了一個 梨 我吃了一個 西瓜

代碼中,Cache/Function.php類用來執(zhí)行函數(shù)緩沖功能。$cache變量是一個Cache_Function對象,使用基于文件的函數(shù)緩存,存入$cacheDir目錄。要緩存一個函數(shù)調(diào),Cache_Function對象$cache的call()方法要像這樣使用:$cache->call(‘slowFunction’, $arr);

這里,slowFunction()函數(shù)被調(diào)用,參數(shù)為一個數(shù)組$arr,這個函數(shù)被緩存在$cacheDir目錄下的一個文件里。任何在此之后的對這個函數(shù)的調(diào)用,將會由$cache->call()返回該函數(shù)執(zhí)行的結(jié)果。 函數(shù)緩存和使用方法和內(nèi)容緩存很相似,不再多說,具體請查看PEAR手冊。

標(biāo)簽: PHP
主站蜘蛛池模板: 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 经济师考试_2025中级经济师报名时间_报名入口_考试时间_华课网校经济师培训网站 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 水平筛厂家-三轴椭圆水平振动筛-泥沙震动筛设备_山东奥凯诺矿机 包装设计公司,产品包装设计|包装制作,包装盒定制厂家-汇包装【官方网站】 | 24位ADC|8位MCU-芯易德科技有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 五轴加工中心_数控加工中心_铝型材加工中心-罗威斯 | 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 西门子伺服控制器维修-伺服驱动放大器-828D数控机床维修-上海涌迪 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 密封圈_泛塞封_格莱圈-[东莞市国昊密封圈科技有限公司]专注密封圈定制生产厂家 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 长沙网站建设制作「网站优化推广」-网页设计公司-速马科技官网 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 全钢实验台,实验室工作台厂家-无锡市辰之航装饰材料有限公司 | 合肥展厅设计-安徽展台设计-合肥展览公司-安徽奥美展览工程有限公司 | 房间温控器|LonWorks|海思 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂 | 振动筛-交叉筛-螺旋筛-滚轴筛-正弦筛-方形摇摆筛「新乡振动筛厂家」 | 德国UST优斯特氢气检漏仪-德国舒赐乙烷检测仪-北京泽钏 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 回转炉,外热式回转窑,回转窑炉-淄博圣元窑炉工程有限公司 | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | 玉米深加工设备-玉米深加工机械-新型玉米工机械生产厂家-河南粮院机械制造有限公司 | 上海佳武自动化科技有限公司 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | POS机办理_个人POS机免费领取 - 银联POS机申请首页 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 自动检重秤-动态称重机-重量分选秤-苏州金钻称重设备系统开发有限公司 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 国际学校_国际学校哪个好_国际课程学校-国际学校择校网 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 |