民审-M

最新版本 X3.3 R20170401+修复文件缓存删除方法 下载量始终为0不更新BUG

作者:民审-M   发布时间:2017-06-08 16:52   回复数:0   浏览数:235
民审-M
2350民审-M金牌草根
2017-06-08 16:52:22
2350 2017-06-08 16:52:22
bug显现:

图片:bug显现.png



bug文件:source/class/memory/memory_driver_file.php


修复:(复制以下全文内容到source/class/memory/memory_driver_file.php覆盖。
<?php

/**
 *      [Discuz!] (C)2001-2099 Comsenz Inc.
 *      This is NOT a freeware, use is subject to license terms
 *
 *      $Id: memory_driver_yac.php 27635 2017-02-02 17:02:46Z NaiXiaoxIN $
 */
if (!defined('IN_DISCUZ')) {
exit('Access Denied');
}

class memory_driver_file {

public $cacheName = 'File';
public $enable;
public $path;

public function env() {
return true;
}

public function init($config) {
$this->path = $config['server'].'/';
if($config['server']) {
$this->enable = is_dir(DISCUZ_ROOT.$this->path);
if(!$this->enable) {
dmkdir(DISCUZ_ROOT.$this->path);
$this->enable = is_dir(DISCUZ_ROOT.$this->path);
}
} else {
$this->enable = false;
}
}

private function cachefile($key) {
return str_replace('_', '/', $key).'/'.$key;
}

public function get($key) {
$file = DISCUZ_ROOT.$this->path.$this->cachefile($key).'.php';
if(!file_exists($file)) {
return false;
}
$data = null;
@include $file;
if($data !== null) {
if($data['exp'] && $data['exp'] < TIMESTAMP) {
return false;
} else {
return $data['data'];
}
} else {
return false;
}
}

public function set($key, $value, $ttl = 0) {
$file = DISCUZ_ROOT.$this->path.$this->cachefile($key).'.php';
dmkdir(dirname($file));
$data = array(
   'exp' => $ttl ? TIMESTAMP + $ttl : 0,
   'data' => $value,
);
file_put_contents($file, \"<?php\n\$data = \".var_export($data, 1).\";\n\");
return true;
}

public function rm($key) {
return @unlink(DISCUZ_ROOT.$this->path.$this->cachefile($key).'.php');
}

private function dir_clear($dir) {
if($directory = @dir($dir)) {
while($entry = $directory->read()) {
$filename = $dir.'/'.$entry;
if($entry != '.' && $entry != '..') {
if(is_file($filename)) {
@unlink($filename);
} else {
$this->dir_clear($filename);
@rmdir($filename);
}
}
}
$directory->close();
}
}

public function clear() {
return $this->dir_clear(DISCUZ_ROOT.$this->path);
}

public function inc($key, $step = 1) {
$old = $this->get($key);
if (!$old) {
return false;
}
return $this->set($key, $old + $step);
}

public function dec($key, $step = 1) {
$old = $this->get($key);
if (!$old) {
return false;
}
return $this->set($key, $old - $step);
}

}

游客
登录后才可以回帖,登录 或者 注册