内核更新

This commit is contained in:
2016-08-19 11:53:45 +08:00
parent 63f95a8ee9
commit 707ebdf51d
20 changed files with 505 additions and 154 deletions

View File

@@ -11,13 +11,14 @@
namespace think\cache\driver;
use think\cache\Driver;
use think\Exception;
/**
* Sqlite缓存驱动
* @author liu21st <liu21st@gmail.com>
*/
class Sqlite
class Sqlite extends Driver
{
protected $options = [
@@ -46,6 +47,17 @@ class Sqlite
$this->handler = $func($this->options['db']);
}
/**
* 获取实际的缓存标识
* @access public
* @param string $name 缓存名
* @return string
*/
protected function getCacheKey($name)
{
return $this->options['prefix'] . sqlite_escape_string($name);
}
/**
* 判断缓存
* @access public
@@ -54,7 +66,7 @@ class Sqlite
*/
public function has($name)
{
$name = $this->options['prefix'] . sqlite_escape_string($name);
$name = $this->getCacheKey($name);
$sql = 'SELECT value FROM ' . $this->options['table'] . ' WHERE var=\'' . $name . '\' AND (expire=0 OR expire >' . $_SERVER['REQUEST_TIME'] . ') LIMIT 1';
$result = sqlite_query($this->handler, $sql);
return sqlite_num_rows($result);
@@ -69,7 +81,7 @@ class Sqlite
*/
public function get($name, $default = false)
{
$name = $this->options['prefix'] . sqlite_escape_string($name);
$name = $this->getCacheKey($name);
$sql = 'SELECT value FROM ' . $this->options['table'] . ' WHERE var=\'' . $name . '\' AND (expire=0 OR expire >' . $_SERVER['REQUEST_TIME'] . ') LIMIT 1';
$result = sqlite_query($this->handler, $sql);
if (sqlite_num_rows($result)) {
@@ -93,7 +105,7 @@ class Sqlite
*/
public function set($name, $value, $expire = null)
{
$name = $this->options['prefix'] . sqlite_escape_string($name);
$name = $this->getCacheKey($name);
$value = sqlite_escape_string(serialize($value));
if (is_null($expire)) {
$expire = $this->options['expire'];
@@ -103,7 +115,13 @@ class Sqlite
//数据压缩
$value = gzcompress($value, 3);
}
$sql = 'REPLACE INTO ' . $this->options['table'] . ' (var, value,expire) VALUES (\'' . $name . '\', \'' . $value . '\', \'' . $expire . '\')';
if ($this->tag) {
$tag = $this->tag;
$this->tag = null;
} else {
$tag = '';
}
$sql = 'REPLACE INTO ' . $this->options['table'] . ' (var, value, expire, tag) VALUES (\'' . $name . '\', \'' . $value . '\', \'' . $expire . '\', \'' . $tag . '\')';
if (sqlite_query($this->handler, $sql)) {
return true;
}
@@ -152,7 +170,7 @@ class Sqlite
*/
public function rm($name)
{
$name = $this->options['prefix'] . sqlite_escape_string($name);
$name = $this->getCacheKey($name);
$sql = 'DELETE FROM ' . $this->options['table'] . ' WHERE var=\'' . $name . '\'';
sqlite_query($this->handler, $sql);
return true;
@@ -161,12 +179,19 @@ class Sqlite
/**
* 清除缓存
* @access public
* @param string $tag 标签名
* @return boolean
*/
public function clear()
public function clear($tag = null)
{
if ($tag) {
$name = sqlite_escape_string($tag);
$sql = 'DELETE FROM ' . $this->options['table'] . ' WHERE tag=\'' . $name . '\'';
sqlite_query($this->handler, $sql);
return true;
}
$sql = 'DELETE FROM ' . $this->options['table'];
sqlite_query($this->handler, $sql);
return;
return true;
}
}