选择语言 :

 Driver_Cache_Driver_File::increment

递增

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
File: ./drivers/cache/file/file.class.php
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;
}