帮我 在 php缓存类 增加个自动增加目录的功能

来源:百度知道 编辑:UC知道 时间:2024/06/24 10:58:02
<?php
class Cache {
var $status = True; // 值为True表示开启缓存;值False表示关闭缓存功能。
var $cacheDir = 'cache/'; //存放缓存文件的默认目录
var $cacheFile = ''; //缓存文件的真实文件名
var $timeOut = 1224000000; // 内容被重复使用的最长时限
var $startTime = 0; // 程序执行的开始时间
var $caching = true; // 是否需要对内容进行缓存;值为False表示直接读取缓存文件内容

function startCache(){
$this->startTime = $this->getMicroTime();
ob_start();
if ($this->status){
$this->cacheFile = $this->cacheDir . urlencode( $_SERVER['REQUEST_URI'] );
if ( (file_exists($this->cacheFile)) &&
((fileatime($this->cacheFile) + $this->timeOut) > time()) )
{
//从缓存文件中读取内容
$handle = fopen($this->cacheFile , "r");
$html = fread($handle,filesize($this->cacheFile));
fclos

原理就是把$_SERVER['REQUEST_URI']经过md5处理后得到的字符串(2510c39011c5be704182423e3a695e91)前4个字符作为目录,即:25/10。
每个$_SERVER['REQUEST_URI']都对应随即散列的md5值,即可平均到每个目录中。
每层目录的最大个数就是(26+10)*(26+10)=1296,总的文件就是1296*1296=1679616,在合理的范围之内。

只是不知道1000分怎么才能送啊,呵呵,开玩笑了
<?php

class Cache {
var $status = True; // 值为True表示开启缓存;值False表示关闭缓存功能。
var $cacheDir = 'cache/'; //存放缓存文件的默认目录
var $cacheFile = ''; //缓存文件的真实文件名
var $timeOut = 1224000000; // 内容被重复使用的最长时限
var $startTime = 0; // 程序执行的开始时间
var $caching = true; // 是否需要对内容进行缓存;值为False表示直接读取缓存文件内容

function Cache(){
$depth = 2; //分两层目录
$code = md5($_SERVER['REQUEST_URI']);
for($i=0, $j=0; $j<$depth; $j++,$i+=2){
$this->cacheDir .= $code{$i} . $code{$i+1} . '/';
if(!file_exists($dir)){
@mkdir($this->cacheDir, '0777');
}
}
}
function startCache(){