操作如下:
utility::clearCache("Data");
或
utility::clearCache("Data-Logs");
class utility{
/**
* 清除緩存 lhb_printf(get_defined_constants(true))-->打印出所有系統自定義常量;
* @param string $cacheDir 要刪除的緩存的目錄,目錄用"-"隔開 [如Temp-Data-Logs]
*/
static public function clearCache($cacheDir)
{
$type = $cacheDir;
//將傳遞過來的值進行切割,我是已“-”進行切割的
$name = explode('-', $type);
//得到切割的條數,便於下面循環
$count = count($name);
//循環調用上面的方法
for ($i = 0; $i < $count; $i++)
{
//得到文件的絕對路徑
$abs_dir = dirname(dirname(dirname(dirname(__FILE__))));
//組合路徑
$pa = $abs_dir . str_replace("/", "\\", str_replace("./", "\\", RUNTIME_PATH)); //得到運行時的目錄
$runtime = $pa . 'common~runtime.php';
if (file_exists($runtime))//判斷 文件是否存在
{
unlink($runtime); //進行文件刪除
}
//調用刪除文件夾下所有文件的方法
$this->rmFile($pa, $name[$i]);
}
}
/**
* 刪除文件和目錄
* @param type $path 要刪除文件夾路徑
* @param type $fileName 要刪除的目錄名稱
*/
private function rmFile($path, $fileName)
{//刪除執行的方法
//去除空格
$path = preg_replace('/(\/){2,}|{\\\}{1,}/', '/', $path);
//得到完整目錄
$path.= $fileName;
//判斷此文件是否爲一個文件目錄
if (is_dir($path))
{
//打開文件
if ($dh = opendir($path))
{
//遍歷文件目錄名稱
while (($file = readdir($dh)) != false)
{
$sub_file_path = $path . "\\" . $file;
if ("." == $file || ".." == $file)
{
continue;
}
if (is_dir($sub_file_path))
{
$this->rmFile($sub_file_path, "");
rmdir($sub_file_path);
}
//逐一進行刪除
unlink($sub_file_path);
}
//關閉文件
closedir($dh);
}
rmdir($sub_file_path);//刪除當前目錄
}
}
}