缓存有效期参数支持传入DateTime对象

This commit is contained in:
thinkphp
2017-08-30 15:47:26 +08:00
parent fe779ee04c
commit d41efe86dd
8 changed files with 54 additions and 30 deletions

View File

@@ -127,9 +127,9 @@ class File extends Driver
/** /**
* 写入缓存 * 写入缓存
* @access public * @access public
* @param string $name 缓存变量名 * @param string $name 缓存变量名
* @param mixed $value 存储数据 * @param mixed $value 存储数据
* @param int $expire 有效时间 0为永久 * @param integer|DateTime $expire 有效时间(秒)
* @return boolean * @return boolean
*/ */
public function set($name, $value, $expire = null) public function set($name, $value, $expire = null)
@@ -137,6 +137,9 @@ class File extends Driver
if (is_null($expire)) { if (is_null($expire)) {
$expire = $this->options['expire']; $expire = $this->options['expire'];
} }
if ($expire instanceof \DateTime) {
$expire = $expire->getTimestamp() - time();
}
$filename = $this->getCacheKey($name); $filename = $this->getCacheKey($name);
if ($this->tag && !is_file($filename)) { if ($this->tag && !is_file($filename)) {
$first = true; $first = true;

View File

@@ -77,7 +77,7 @@ class Lite extends Driver
if (is_file($filename)) { if (is_file($filename)) {
// 判断是否过期 // 判断是否过期
$mtime = filemtime($filename); $mtime = filemtime($filename);
if ($mtime < $_SERVER['REQUEST_TIME']) { if ($mtime < time()) {
// 清除已经过期的文件 // 清除已经过期的文件
unlink($filename); unlink($filename);
return $default; return $default;
@@ -91,9 +91,9 @@ class Lite extends Driver
/** /**
* 写入缓存 * 写入缓存
* @access public * @access public
* @param string $name 缓存变量名 * @param string $name 缓存变量名
* @param mixed $value 存储数据 * @param mixed $value 存储数据
* @param int $expire 有效时间 0为永久 * @param integer|DateTime $expire 有效时间(秒)
* @return bool * @return bool
*/ */
public function set($name, $value, $expire = null) public function set($name, $value, $expire = null)
@@ -101,9 +101,11 @@ class Lite extends Driver
if (is_null($expire)) { if (is_null($expire)) {
$expire = $this->options['expire']; $expire = $this->options['expire'];
} }
// 模拟永久 if ($expire instanceof \DateTime) {
if (0 === $expire) { $expire = $expire->getTimestamp();
$expire = 10 * 365 * 24 * 3600; } else {
$expire = 0 === $expire ? 10 * 365 * 24 * 3600 : $expire;
$expire = time() + $expire;
} }
$filename = $this->getCacheKey($name); $filename = $this->getCacheKey($name);
if ($this->tag && !is_file($filename)) { if ($this->tag && !is_file($filename)) {
@@ -113,7 +115,7 @@ class Lite extends Driver
// 通过设置修改时间实现有效期 // 通过设置修改时间实现有效期
if ($ret) { if ($ret) {
isset($first) && $this->setTagItem($filename); isset($first) && $this->setTagItem($filename);
touch($filename, $_SERVER['REQUEST_TIME'] + $expire); touch($filename, $expire);
} }
return $ret; return $ret;
} }

View File

@@ -82,9 +82,9 @@ class Memcache extends Driver
/** /**
* 写入缓存 * 写入缓存
* @access public * @access public
* @param string $name 缓存变量名 * @param string $name 缓存变量名
* @param mixed $value 存储数据 * @param mixed $value 存储数据
* @param integer $expire 有效时间(秒) * @param integer|DateTime $expire 有效时间(秒)
* @return bool * @return bool
*/ */
public function set($name, $value, $expire = null) public function set($name, $value, $expire = null)
@@ -92,6 +92,9 @@ class Memcache extends Driver
if (is_null($expire)) { if (is_null($expire)) {
$expire = $this->options['expire']; $expire = $this->options['expire'];
} }
if ($expire instanceof \DateTime) {
$expire = $expire->getTimestamp() - time();
}
if ($this->tag && !$this->has($name)) { if ($this->tag && !$this->has($name)) {
$first = true; $first = true;
} }

View File

@@ -93,9 +93,9 @@ class Memcached extends Driver
/** /**
* 写入缓存 * 写入缓存
* @access public * @access public
* @param string $name 缓存变量名 * @param string $name 缓存变量名
* @param mixed $value 存储数据 * @param mixed $value 存储数据
* @param integer $expire 有效时间(秒) * @param integer|DateTime $expire 有效时间(秒)
* @return bool * @return bool
*/ */
public function set($name, $value, $expire = null) public function set($name, $value, $expire = null)
@@ -103,6 +103,9 @@ class Memcached extends Driver
if (is_null($expire)) { if (is_null($expire)) {
$expire = $this->options['expire']; $expire = $this->options['expire'];
} }
if ($expire instanceof \DateTime) {
$expire = $expire->getTimestamp() - time();
}
if ($this->tag && !$this->has($name)) { if ($this->tag && !$this->has($name)) {
$first = true; $first = true;
} }

View File

@@ -91,9 +91,9 @@ class Redis extends Driver
/** /**
* 写入缓存 * 写入缓存
* @access public * @access public
* @param string $name 缓存变量名 * @param string $name 缓存变量名
* @param mixed $value 存储数据 * @param mixed $value 存储数据
* @param integer $expire 有效时间(秒) * @param integer|DateTime $expire 有效时间(秒)
* @return boolean * @return boolean
*/ */
public function set($name, $value, $expire = null) public function set($name, $value, $expire = null)
@@ -101,6 +101,9 @@ class Redis extends Driver
if (is_null($expire)) { if (is_null($expire)) {
$expire = $this->options['expire']; $expire = $this->options['expire'];
} }
if ($expire instanceof \DateTime) {
$expire = $expire->getTimestamp() - time();
}
if ($this->tag && !$this->has($name)) { if ($this->tag && !$this->has($name)) {
$first = true; $first = true;
} }

View File

@@ -96,9 +96,9 @@ class Sqlite extends Driver
/** /**
* 写入缓存 * 写入缓存
* @access public * @access public
* @param string $name 缓存变量名 * @param string $name 缓存变量名
* @param mixed $value 存储数据 * @param mixed $value 存储数据
* @param integer $expire 有效时间(秒) * @param integer|DateTime $expire 有效时间(秒)
* @return boolean * @return boolean
*/ */
public function set($name, $value, $expire = null) public function set($name, $value, $expire = null)
@@ -108,7 +108,11 @@ class Sqlite extends Driver
if (is_null($expire)) { if (is_null($expire)) {
$expire = $this->options['expire']; $expire = $this->options['expire'];
} }
$expire = (0 == $expire) ? 0 : ($_SERVER['REQUEST_TIME'] + $expire); //缓存有效期为0表示永久缓存 if ($expire instanceof \DateTime) {
$expire = $expire->getTimestamp();
} else {
$expire = (0 == $expire) ? 0 : (time() + $expire); //缓存有效期为0表示永久缓存
}
if (function_exists('gzcompress')) { if (function_exists('gzcompress')) {
//数据压缩 //数据压缩
$value = gzcompress($value, 3); $value = gzcompress($value, 3);

View File

@@ -68,9 +68,9 @@ class Wincache extends Driver
/** /**
* 写入缓存 * 写入缓存
* @access public * @access public
* @param string $name 缓存变量名 * @param string $name 缓存变量名
* @param mixed $value 存储数据 * @param mixed $value 存储数据
* @param integer $expire 有效时间(秒) * @param integer|DateTime $expire 有效时间(秒)
* @return boolean * @return boolean
*/ */
public function set($name, $value, $expire = null) public function set($name, $value, $expire = null)
@@ -78,6 +78,9 @@ class Wincache extends Driver
if (is_null($expire)) { if (is_null($expire)) {
$expire = $this->options['expire']; $expire = $this->options['expire'];
} }
if ($expire instanceof \DateTime) {
$expire = $expire->getTimestamp() - time();
}
$key = $this->getCacheKey($name); $key = $this->getCacheKey($name);
if ($this->tag && !$this->has($name)) { if ($this->tag && !$this->has($name)) {
$first = true; $first = true;

View File

@@ -68,9 +68,9 @@ class Xcache extends Driver
/** /**
* 写入缓存 * 写入缓存
* @access public * @access public
* @param string $name 缓存变量名 * @param string $name 缓存变量名
* @param mixed $value 存储数据 * @param mixed $value 存储数据
* @param integer $expire 有效时间(秒) * @param integer|DateTime $expire 有效时间(秒)
* @return boolean * @return boolean
*/ */
public function set($name, $value, $expire = null) public function set($name, $value, $expire = null)
@@ -78,6 +78,9 @@ class Xcache extends Driver
if (is_null($expire)) { if (is_null($expire)) {
$expire = $this->options['expire']; $expire = $this->options['expire'];
} }
if ($expire instanceof \DateTime) {
$expire = $expire->getTimestamp() - time();
}
if ($this->tag && !$this->has($name)) { if ($this->tag && !$this->has($name)) {
$first = true; $first = true;
} }