You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
125
extend/app_alipay/lotusphp_runtime/StoreFile.php
Executable file
125
extend/app_alipay/lotusphp_runtime/StoreFile.php
Executable file
@ -0,0 +1,125 @@
|
||||
<?php
|
||||
class LtStoreFile implements LtStore
|
||||
{
|
||||
public $storeDir;
|
||||
public $prefix = 'LtStore';
|
||||
public $useSerialize = false;
|
||||
static public $defaultStoreDir = "/tmp/LtStoreFile/";
|
||||
public function init()
|
||||
{
|
||||
/**
|
||||
* 目录不存在和是否可写在调用add是测试
|
||||
* @todo detect dir is exists and writable
|
||||
*/
|
||||
if (null == $this->storeDir)
|
||||
{
|
||||
$this->storeDir = self::$defaultStoreDir;
|
||||
}
|
||||
$this->storeDir = str_replace('\\', '/', $this->storeDir);
|
||||
$this->storeDir = rtrim($this->storeDir, '\\/') . '/';
|
||||
}
|
||||
|
||||
/**
|
||||
* 当key存在时:
|
||||
* 如果没有过期, 不更新值, 返回 false
|
||||
* 如果已经过期, 更新值, 返回 true
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function add($key, $value)
|
||||
{
|
||||
$file = $this->getFilePath($key);
|
||||
$cachePath = pathinfo($file, PATHINFO_DIRNAME);
|
||||
if (!is_dir($cachePath))
|
||||
{
|
||||
if (!@mkdir($cachePath, 0777, true))
|
||||
{
|
||||
trigger_error("Can not create $cachePath");
|
||||
}
|
||||
}
|
||||
if (is_file($file))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ($this->useSerialize)
|
||||
{
|
||||
$value = serialize($value);
|
||||
}
|
||||
$length = file_put_contents($file, '<?php exit;?>' . $value);
|
||||
return $length > 0 ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除不存在的key返回false
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function del($key)
|
||||
{
|
||||
$file = $this->getFilePath($key);
|
||||
if (!is_file($file))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return @unlink($file);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 取不存在的key返回false
|
||||
* 已经过期返回false
|
||||
*
|
||||
* @return 成功返回数据,失败返回false
|
||||
*/
|
||||
public function get($key)
|
||||
{
|
||||
$file = $this->getFilePath($key);
|
||||
if (!is_file($file))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
$str = file_get_contents($file);
|
||||
$value = substr($str, 13);
|
||||
if ($this->useSerialize)
|
||||
{
|
||||
$value = unserialize($value);
|
||||
}
|
||||
return $value;
|
||||
}
|
||||
|
||||
/**
|
||||
* key不存在 返回false
|
||||
* 不管有没有过期,都更新数据
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function update($key, $value)
|
||||
{
|
||||
$file = $this->getFilePath($key);
|
||||
if (!is_file($file))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->useSerialize)
|
||||
{
|
||||
$value = serialize($value);
|
||||
}
|
||||
$length = file_put_contents($file, '<?php exit;?>' . $value);
|
||||
return $length > 0 ? true : false;
|
||||
}
|
||||
}
|
||||
|
||||
public function getFilePath($key)
|
||||
{
|
||||
$token = md5($key);
|
||||
return $this->storeDir .
|
||||
$this->prefix . '/' .
|
||||
substr($token, 0, 2) .'/' .
|
||||
substr($token, 2, 2) . '/' .
|
||||
$token . '.php';
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user