This commit is contained in:
thinkphp
2018-01-15 16:10:09 +08:00

View File

@@ -27,6 +27,8 @@ class File extends Driver
'data_compress' => false, 'data_compress' => false,
]; ];
protected $expire;
/** /**
* 构造函数 * 构造函数
* @param array $options * @param array $options
@@ -106,13 +108,15 @@ class File extends Driver
if (!is_file($filename)) { if (!is_file($filename)) {
return $default; return $default;
} }
$content = file_get_contents($filename); $content = file_get_contents($filename);
$this->expire = null;
if (false !== $content) { if (false !== $content) {
$expire = (int) substr($content, 8, 12); $expire = (int) substr($content, 8, 12);
if (0 != $expire && time() > filemtime($filename) + $expire) { if (0 != $expire && time() > filemtime($filename) + $expire) {
return $default; return $default;
} }
$content = substr($content, 32); $this->expire = $expire;
$content = substr($content, 32);
if ($this->options['data_compress'] && function_exists('gzcompress')) { if ($this->options['data_compress'] && function_exists('gzcompress')) {
//启用数据压缩 //启用数据压缩
$content = gzuncompress($content); $content = gzuncompress($content);
@@ -170,11 +174,14 @@ class File extends Driver
public function inc($name, $step = 1) public function inc($name, $step = 1)
{ {
if ($this->has($name)) { if ($this->has($name)) {
$value = $this->get($name) + $step; $value = $this->get($name) + $step;
$expire = $this->expire;
} else { } else {
$value = $step; $value = $step;
$expire = 0;
} }
return $this->set($name, $value, 0) ? $value : false;
return $this->set($name, $value, $expire) ? $value : false;
} }
/** /**
@@ -187,11 +194,14 @@ class File extends Driver
public function dec($name, $step = 1) public function dec($name, $step = 1)
{ {
if ($this->has($name)) { if ($this->has($name)) {
$value = $this->get($name) - $step; $value = $this->get($name) - $step;
$expire = $this->expire;
} else { } else {
$value = -$step; $value = -$step;
$expire = 0;
} }
return $this->set($name, $value, 0) ? $value : false;
return $this->set($name, $value, $expire) ? $value : false;
} }
/** /**