/** * 清理全部的缓存,包括多余的file_meta * @param $limit */ public function cleanCache($limit) { //data源处理对象 $dataObj = Yii::app()->data; // 回收站插件: -1保留值 0正常 1删除 $this->handleCleanFileMeta($limit); // 清理ref_count等于0的文件 $versions = MiniVersion::getInstance()->getCleanFiles(100); foreach ($versions as $version) { $files = UserFile::model()->findAll('version_id=?', array($version['id'])); // 如果$file存在此version_id,不删除 if (!empty($files)) { for ($i = 0; $i < count($files); $i++) { MiniVersion::getInstance()->updateRefCount($version["id"]); } continue; } // 如果不存在的话,删除流文件,删除该条version记录 $signature = $version['file_signature']; $signaturePath = MiniUtil::getPathBySplitStr($signature); // 判断文件是否存在 if ($dataObj->exists($signaturePath) === false) { MiniVersion::getInstance()->deleteById($version["id"]); continue; } // 删除文件 $dataObj->delete($signaturePath); //删除空的文件夹 $parts = CUtils::getFoldersBySplitStr($signature); foreach ($parts as $part) { $dataObj->delete($part); } // 删除version记录 MiniVersion::getInstance()->deleteById($version["id"]); } MiniUtil::deleteDir(BASE . 'temp'); }