递增
null Driver_Cache_Driver_File::increment( string $key [, int $offset = integer 1 , int $lifetime = integer 60 ] )
参数列表
参数 类型 描述 默认值 $key
string
$key $offset
int
$offset integer 1 $lifetime
int
当递减失则时当作set使用 integer 60
public function increment($key, $offset = 1, $lifetime = 60)
{
if ($this->is_file_write_disalbed)return false;
$filename = $this->get_filename_by_key($key);
if (!file_exists($filename))
{
# 不存在,则设置
return $this->set($key, $offset, $lifetime);
}
$fh = fopen($filename, 'r+');
if (flock($fh, LOCK_EX))
{
$data = trim(fread($fh, filesize($filename)));
$expired_setting = $this->get_expired_setting($key, $data);
if ($expired_setting)
{
$buffer = $data + $offset;
$lifetime = max($expired_setting['lifetime'], $lifetime);
}
else
{
$buffer = $offset;
}
$data = $this->format_data($lifetime, $buffer);
rewind($fh);
fwrite($fh, $data);
fflush($fh);
ftruncate($fh, ftell($fh));
flock($fh, LOCK_UN);
$status = true;
}
else
{
$status = false;
}
@fclose($fh);
if ($status)
{
# 同步文件
File::sync($filename, $this->storage);
}
return $status;
}