日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

詳細(xì)講解PHP中緩存技術(shù)的應(yīng)用_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:利用PHP V5開發(fā)多任務(wù)應(yīng)用程序
許多 PHP 開發(fā)人員認(rèn)為,由于標(biāo)準(zhǔn)的 PHP 缺少線程功能,因此實際 PHP 應(yīng)用程序不可能執(zhí)行多任務(wù)處理。例如,如果應(yīng)用程序需要其他 Web 站點的信息,那么在遠(yuǎn)程檢索完成之前它都必須停止。這是錯

PHP,一門最近幾年興起的web設(shè)計腳本語言,由于它的強大和可伸縮性,近幾年來得到長足的發(fā)展,php相比傳統(tǒng)的asp網(wǎng)站,在速度上有絕對的優(yōu)勢,想mssql轉(zhuǎn)6萬條數(shù)據(jù)php如需要40秒,asp不下2分鐘.但是,由于網(wǎng)站的數(shù)據(jù)越來越多,我們渴求能更快速的調(diào)用數(shù)據(jù),不必要每次都從數(shù)據(jù)庫掉,我們可以從其他的地方,比方一個文件,或者某個內(nèi)存地址,這就是php的緩存技術(shù),也就是Cache技術(shù).

一般來說,緩存的目的是把數(shù)據(jù)放在一個地方讓訪問的更快點,毫無疑問,內(nèi)存是最快的,但是,幾百M的數(shù)據(jù)能往內(nèi)存放么?這不現(xiàn)實,當(dāng)然,有的時候臨時放如服務(wù)器緩存,如ob_start()這個緩存頁面開啟的話在發(fā)送文件頭之前頁面內(nèi)容都被緩存在內(nèi)存中,知道等頁面輸出自動清楚或者等待ob_get_contents的返回,[或者被ob_end_clean顯示的清除,這在靜態(tài)頁面的生成中能很好的利用,在模板中能得到很好的體現(xiàn),我的這篇文章深入的討論了:

談PHP生成靜態(tài)頁面,這是一種方式,但這是臨時性的,不是解決我們問題的好方法.

另外,在asp中有一對象application,可以保存公用的參數(shù),這也算點緩存,但在php,我至今沒看到開發(fā)者產(chǎn)出這種對象,的確,沒必要.asp.net的頁面緩存技術(shù)就用的是viewstate,而cache就是文件關(guān)聯(lián),(不一定準(zhǔn)確),文件被修改,更新緩存,文件沒被修改而且不超時(注釋1),就讀取緩存,返回結(jié)果,就是這個思路,看看這個源碼:

<?php
classcache{
/*
ClassName:cache
Description:controltocachedata,$cache_out_timeisaarraytosavecachedatetimeout.
Version:1.0
Author:老農(nóng)cjjer
Lastmodify:2006-2-26
AuthorURL:http://www.cjjer.com
*/
private$cache_dir;
private$expireTime=180;//緩存的時間是60秒
function__construct($cache_dirname){
if(!@is_dir($cache_dirname)){
if(!@mkdir($cache_dirname,0777)){
$this->warn('緩存文件不存在而且不能創(chuàng)建,需要手動創(chuàng)建.');
returnfalse;
}
}
$this->cache_dir=$cache_dirname;
}
function__destruct(){
echo'Cacheclassbye.';
}
functionget_url(){
if(!isset($_SERVER['REQUEST_URI'])){
$url=$_SERVER['REQUEST_URI'];
}else{
$url=$_SERVER['SCRIPT_NAME'];
$url.=(!empty($_SERVER['QUERY_STRING']))?'?'.$_SERVER['QUERY_STRING']:'';
}
return$url;
}
functionwarn($errorstring){
echo"<b><fontcolor='red'>發(fā)生錯誤:<pre>".$errorstring."</pre></font></b>";
}
functioncache_page($pageurl,$pagedata){
if(!$fso=fopen($pageurl,'w')){
$this->warns('無法打開緩存文件.');//trigger_error
returnfalse;
}
if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型鎖定
$this->warns('無法鎖定緩存文件.');//trigger_error
returnfalse;
}
if(!fwrite($fso,$pagedata)){//寫入字節(jié)流,serialize寫入其他格式
$this->warns('無法寫入緩存文件.');//trigger_error
returnfalse;
}
flock($fso,LOCK_UN);//釋放鎖定
fclose($fso);
returntrue;
}
functiondisplay_cache($cacheFile){
if(!file_exists($cacheFile)){
$this->warn('無法讀取緩存文件.');//trigger_error
returnfalse;
}
echo'讀取緩存文件:'.$cacheFile;
//returnunserialize(file_get_contents($cacheFile));
$fso=fopen($cacheFile,'r');
$data=fread($fso,filesize($cacheFile));
fclose($fso);
return$data;
}
functionreadData($cacheFile='default_cache.txt'){
$cacheFile=$this->cache_dir."/".$cacheFile;
if(file_exists($cacheFile)&&filemtime($cacheFile)>(time()-$this->expireTime)){
$data=$this->display_cache($cacheFile);
}else{
$data="fromherewocangetitfrommysqldatabase,updatetimeis<b>".date('ldSofFYh:i:sA')."</b>,過期時間是:".date('ldSofFYh:i:sA',time() $this->expireTime)."----------";
$this->cache_page($cacheFile,$data);
}
return$data;
}

}
?>

分享:詳細(xì)解析 PHP 向 MySQL 發(fā)送數(shù)據(jù)過程
下面的一段代碼是一個很簡單的 HTML 表單: <html> <body> <formaction=submitform.php3method=GET> 姓:<inputtype=textname=fir

共4頁上一頁1234下一頁
來源:模板無憂//所屬分類:PHP教程/更新時間:2008-08-22
相關(guān)PHP教程