php缓存实例,一个PHP缓存类实例
一個PHP緩存類實例
發布于 2014-08-05 21:44:28 | 104 次閱讀 | 評論: 0 | 來源: 網友投遞
PHP開源腳本語言PHP(外文名: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,入門門檻較低,易于學習,使用廣泛,主要適用于Web開發領域。PHP的文件后綴名為php。
本文是了一個簡潔實用的PHP緩存類,可用來檢查緩存文件是否在設置更新時間之內、清除緩存文件、根據當前動態文件生成緩存文件名、連續創建目錄、緩存文件輸出靜態等功能。對于采用PHP開發CMS系統來說,離不開對緩存的處理,合理利用好緩存可有效的提高程序執行效率。緩存的應用對于php大型項目的開發來說至關重要,需要的朋友可以參考下
php緩存類文件完整代碼如下:
/*
* 緩存類 cache
*/
class cache {
//緩存目錄
var $cacheRoot = "./cache/";
//緩存更新時間秒數,0為不緩存
var $cacheLimitTime = 0;
//緩存文件名
var $cacheFileName = "";
//緩存擴展名
var $cacheFileExt = "php";
/*
* 構造函數
* int $cacheLimitTime 緩存更新時間
*/
function cache( $cacheLimitTime ) {
if( intval( $cacheLimitTime ) )
$this->cacheLimitTime = $cacheLimitTime;
$this->cacheFileName = $this->getCacheFileName();
ob_start();
}
/*
* 檢查緩存文件是否在設置更新時間之內
* 返回:如果在更新時間之內則返回文件內容,反之則返回失敗
*/
function cacheCheck(){
if( file_exists( $this->cacheFileName ) ) {
$cTime = $this->getFileCreateTime( $this->cacheFileName );
if( $cTime + $this->cacheLimitTime > time() ) {
echo file_get_contents( $this->cacheFileName );
ob_end_flush();
exit;
}
}
return false;
}
/*
* 緩存文件或者輸出靜態
* string $staticFileName 靜態文件名(含相對路徑)
*/
function caching( $staticFileName = "" ){
if( $this->cacheFileName ) {
$cacheContent = ob_get_contents();
ob_end_flush();
if( $staticFileName ) {
$this->saveFile( $staticFileName, $cacheContent );
}
if( $this->cacheLimitTime )
$this->saveFile( $this->cacheFileName, $cacheContent );
}
}
/*
* 清除緩存文件
* string $fileName 指定文件名(含函數)或者all(全部)
* 返回:清除成功返回true,反之返回false
*/
function clearCache( $fileName = "all" ) {
if( $fileName != "all" ) {
$fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;
if( file_exists( $fileName ) ) {
return @unlink( $fileName );
}else return false;
}
if ( is_dir( $this->cacheRoot ) ) {
if ( $dir = @opendir( $this->cacheRoot ) ) {
while ( $file = @readdir( $dir ) ) {
$check = is_dir( $file );
if ( !$check )
@unlink( $this->cacheRoot . $file );
}
@closedir( $dir );
return true;
}else{
return false;
}
}else{
return false;
}
}
/*根據當前動態文件生成緩存文件名*/
function getCacheFileName() {
return $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;
}
/*
* 緩存文件建立時間
* string $fileName 緩存文件名(含相對路徑)
* 返回:文件生成時間秒數,文件不存在返回0
*/
function getFileCreateTime( $fileName ) {
if( ! trim($fileName) ) return 0;
if( file_exists( $fileName ) ) {
return intval(filemtime( $fileName ));
}else return 0;
}
/*
* 保存文件
* string $fileName 文件名(含相對路徑)
* string $text 文件內容
* 返回:成功返回ture,失敗返回false
*/
function saveFile($fileName, $text) {
if( ! $fileName || ! $text ) return false;
if( $this->makeDir( dirname( $fileName ) ) ) {
if( $fp = fopen( $fileName, "w" ) ) {
if( @fwrite( $fp, $text ) ) {
fclose($fp);
return true;
}else {
fclose($fp);
return false;
}
}
}
return false;
}
/*
* 連續建目錄
* string $dir 目錄字符串
* int $mode 權限數字
* 返回:順利創建或者全部已建返回true,其它方式返回false
*/
function makeDir( $dir, $mode = "0777" ) {
if( ! $dir ) return 0;
$dir = str_replace( "\", "/", $dir );
$mdir = "";
foreach( explode( "/", $dir ) as $val ) {
$mdir .= $val."/";
if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;
if( ! file_exists( $mdir ) ) {
if(!@mkdir( $mdir, $mode )){
return false;
}
}
}
return true;
}
}
?>
使用該緩存類的時候可將以上代碼保存為cache.php,具體用法如下所示:
include( "cache.php" );
$cache = new cache(30);
$cache->cacheCheck();
echo date("Y-m-d H:i:s");
$cache->caching();
相關閱讀:
一個PHP緩存類實例
一個PHP緩存類代碼
一個簡單的php緩存類分享
一個簡單實用的PHP緩存類
一個簡單至極的PHP緩存類代碼
一個PHP并發訪問實例代碼
一個好用的PHP驗證碼類實例代碼分享
php文件緩存類用法實例分析
一個完整的php文件上傳類實例講解
PHP采集類Snoopy抓取圖片實例代碼
一個PHP的ZIP壓縮類分享
一個PHP針對數字的加密解密類
總結
以上是生活随笔為你收集整理的php缓存实例,一个PHP缓存类实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win11输入法设置位置(win11输入
- 下一篇: 起点读书怎么赚起点币(起点全部小说大全)