public function cleanAllCache() { $array = list_dir_file($this->cacheDir); $array = $array ? $array : array(); foreach ($array as $cacheFile) { if ($cacheFile['extension'] == 'cache') { @unlink($cacheFile['path']); } } }
/** * @des 获取指定logid的附图 方法体内部自动实现查询、缓存 提升系统执行效率 * @des 注意:本方法额外添加了一个logimageatt缓存字段 方法体外部不宜调用该字段 * CACHE structure:: * array{ * log_id => array('url'=>log_att_image_url,'time'=>unixtimestamp); * } * @param $logid 日志id * @return string => log attachement image url(include blog_url) */ function getLogImageAtt($logid) { global $CACHE; /*缓存文件不存在,建立空值缓存文件先*/ if (!is_file(EMLOG_ROOT . '/content/cache/logimageatt.php')) { $CACHE->cacheWrite(serialize(array(0 => array('url' => TEMPLATE_URL . 'images/noImg.png', 'time' => time()))), 'logimageatt'); } $logImageAtt = $CACHE->readCache('logimageatt'); if (!empty($logImageAtt) && !empty($logImageAtt[$logid])) { //12小时候重建缓存以处理可能要替换文章附图的情况 默认不重建 if (_g('up_cache')) { if ($logImageAtt[$logid]['time'] + 12 * 3600 > time()) { return $logImageAtt[$logid]['url']; } } else { return $logImageAtt[$logid]['url']; } } //缓存中不存在 建立缓存并返回数据 $Db = Database::getInstance(); $query = $Db->query("SELECT * FROM " . DB_PREFIX . "attachment WHERE `blogid`=" . $logid . " ORDER BY `aid` DESC"); $_attcache = TEMPLATE_URL . 'images/noImg.png'; //待裁剪图片数据 优先使用已有220px*150px的附图 $_imageArr = array('rdir' => '', 'cdir' => '', 'width' => 0, 'height' => 0); while ($row = $Db->fetch_array($query)) { if ($row['width'] == 220 && $row['height'] == 150) { $_attcache = BLOG_URL . ltrim(ltrim($row['filepath'], '.'), '/'); break; } $fileAbsoluteDir = '.' . ltrim($row['filepath'], '.'); //图片目录相对于入口文件的路径 $suffix = strtolower(getFileSuffix($row['filepath'])); /*兼容老系统产生的无宽度、高度的图片尺寸*/ if (is_file($fileAbsoluteDir) && in_array($suffix, array('jpg', 'png', 'jpeg', 'gif')) && $row['width'] == 0 && $row['height'] == 0) { $size = @getimagesize($fileAbsoluteDir); //读取图片尺寸情况 //方法getimagesize存在异常 返回false和错误信息 抑制并退出 if (false === $size) { break; } if ($size[0] == 220 && $size[1] == 150) { $_attcache = BLOG_URL . ltrim(ltrim($row['filepath'], '.'), '/'); break; } else { $row['width'] = $size[0]; $row['height'] = $size[1]; } } //缩略图相对路径 强行指定缩略图为jpg后缀格式 $fileCorpDir = '.' . ltrim(pathinfo($fileAbsoluteDir, PATHINFO_DIRNAME), '.') . '/' . $logid . '.jpg'; //依据设置参数进行是否强行重建 if (is_file($fileCorpDir) && !_g('up_cache')) { $_attcache = BLOG_URL . ltrim(ltrim($fileCorpDir, '.'), '/'); break; } //收集尺寸最大的图片进行裁剪 if ($row['width'] > 220 && $row['height'] > 150) { if (is_file($fileAbsoluteDir) && ($row['width'] > $_imageArr['width'] || $row['height'] > $_imageArr['height'])) { $_imageArr = array('rdir' => $fileAbsoluteDir, 'cdir' => $fileCorpDir, 'width' => $row['width'], 'height' => $row['height']); } } } //附图需要进行裁剪 if ($_attcache == TEMPLATE_URL . 'images/noImg.png' && $_imageArr['width'] > 0) { $ret = JcorpImage($_imageArr['rdir'], $_imageArr['cdir'], $_imageArr['width'], $_imageArr['height']); if ($ret) { $_attcache = BLOG_URL . ltrim(ltrim($_imageArr['cdir'], '.'), '/'); } } //是否启用随机默认附图 if ($_attcache == TEMPLATE_URL . 'images/noImg.png' && _g('open_rdm')) { $randomeImage = list_dir_file(EMLOG_ROOT . '/content/templates/J2/images/randoms/'); $max = count($randomeImage) - 1; $rdmKey = rand(0, $max); $_attcache = $randomeImage[$rdmKey]; } //添加新单元数据 $logImageAtt[$logid] = array('url' => $_attcache, 'time' => time()); $CACHE->cacheWrite(serialize($logImageAtt), 'logimageatt'); return $_attcache; }