Xoops是使用Smarty樣板引擎產生內容,也就是吧php輸出成Smarty後再由樣版產生頁面,所以會產生樣板暫存檔(caches),當然Xoops後端也有刪除暫存檔的功能,不過我另外寫了一個刪除暫存檔的function方便使用,分享給大家參考!
1、在模組的function.php中加入以下code
//刪除目錄中內容物件(不包含刪除目錄)function filedeletionArr($from="",$exclude="") {
if (!file_exists($from)) {return false;}
$dir = opendir($from);
while (false !== ($file = readdir($dir))) {
if ($file == '.' OR $file == '..') {continue;}
if (is_dir($from . DIRECTORY_SEPARATOR . $file)) {
filedeletionArr($from . DIRECTORY_SEPARATOR . $file);
}
else {
if(empty(in_array($file, $exclude))){
unlink($from . DIRECTORY_SEPARATOR . $file);
}
}
}
closedir($dir);
return true;
}
2、然後再要使用刪除暫存檔的程式中呼叫 filedeletionArr(),例如定時自動刪除程式之類的,貼上以下code到程式中
// $from 暫存檔資料夾路徑
//$exclude 資料夾中不要刪除的檔案用陣列輸入
//清空smarty_cache
filedeletionArr($from=XOOPS_VAR_PATH.'/caches/smarty_cache',$exclude=array('index.html'))
//清空smarty_compile
filedeletionArr($from=XOOPS_VAR_PATH.'/caches/smarty_compile',$exclude=array('index.html'))
//清空xoops_cache
filedeletionArr($from=XOOPS_VAR_PATH.'/caches/xoops_cache',$exclude=array('index.html'))
這樣當filedeletionArr()被觸發時程式就會自動吧xoops的smarty_cache/smarty_compile/xoops_cache 三個資料夾清的乾乾淨淨,但裡面的防目錄穿透index.html卻會保留,有需要的朋友參考看看吧!
工作心得撰寫:徐嘉裕 Neil hsu
留言
張貼留言