没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\caching\FileCache

继承yii\caching\FileCache » yii\caching\Cache » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\caching\CacheInterface
可用版本自2.0
源码 https://github.com/yiichina/yii2/blob/api/framework/caching/FileCache.php

FileCache 是使用文件系统实现的缓存组件。

对于每个要被缓存的数据值,FileCache 都用单独的文件存储。 这个缓存文件放在 $cachePath 目录下。FileCache 也会自动执行垃圾回收, 删除过期的缓存文件。

可以参考 yii\caching\Cache 查看 FileCache 支持的通用的缓存操作方法。

在 Cache 上更多的详情和详细的使用信息,请参考 guide article on caching

公共属性

隐藏继承的属性

属性类型描述被定义在
$behaviors yii\base\Behavior[] List of behaviors attached to this component yii\base\Component
$cacheFileSuffix string 缓存文件后缀。默认是 '. yii\caching\FileCache
$cachePath string 存储缓存文件的目录。这里可以使用 path alias。 如果没有设置,默认就是应用 runtime 目录的 "cache" 子目录。 yii\caching\FileCache
$defaultDuration integer 以秒为单位的默认的缓存持续时间。默认是 0,意味着永不过期。 在使用 set() 时并且没有明确传递时间参数时才会使用这个属性。 yii\caching\Cache
$dirMode integer 新生成的缓存目录的权限。 这个值将作为 PHP chmod() 函数的参数使用。不使用 umask。 默认是 0775,也就是说可以被拥有者和所属组读写, 但其它用户只读。 yii\caching\FileCache
$directoryLevel integer 存储缓存文件的子目录层级。默认是 1。 如果你的系统有大量的缓存文件(比如一百万),你可以设置一个较大的值, (通常不大于 3 )。使用子目录的目的, 主要确保文件系统不要把太多的文件都单独放在一个目录里。 yii\caching\FileCache
$fileMode integer 新生成的缓存文件的权限。 这个值将作为 PHP chmod() 函数的参数使用。不使用 umask。 如果不设置,那么文件的权限由当前的环境决定。 yii\caching\FileCache
$gcProbability integer 当把一片数据存入缓存时, 触发垃圾回收的可能性(百万分之一)。默认是 10,意味着 0. yii\caching\FileCache
$keyPrefix string 一个缓存键的前缀字符串。当你想在同一个目录 $cachePath 下, 给不同的应用存储缓存数据时,如果要避免冲突, 就会用到它。 为了确保互用性,前缀应该只包含数字和字母。 yii\caching\FileCache
$serializer null|array|false 用来序列化和反序列化缓存数据的函数。默认是 null,这意味着 默认使用 PHP 的 serialize()unserialize() 两个函数。如果你想使用更高效的序列化功能 (比如 [igbinary](http://pecl. yii\caching\Cache

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\Component
__clone() This method is called after the object is created by cloning an existing one. yii\base\Component
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of a component property. yii\base\Component
__isset() Checks if a property is set, i.e. defined and not null. yii\base\Component
__set() Sets the value of a component property. yii\base\Component
__unset() Sets a component property to be null. yii\base\Component
add() 如果对应缓存键不存在,那么把由它指明的缓存数据存入缓存中, 如果缓存键存在,那么什么也不会做。 yii\caching\Cache
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
buildKey() 根据给定的键构建标准的缓存键。 yii\caching\Cache
canGetProperty() Returns a value indicating whether a property can be read. yii\base\Component
canSetProperty() Returns a value indicating whether a property can be set. yii\base\Component
className() Returns the fully qualified name of this class. yii\base\BaseObject
delete() 根据指定的键从缓存中删除数据值。 yii\caching\Cache
detachBehavior() Detaches a behavior from the component. yii\base\Component
detachBehaviors() Detaches all behaviors from the component. yii\base\Component
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component. yii\base\Component
exists() 检测指定的键是否存在缓存中。 如果缓存数据量大的话,这比从缓存中直接获取值稍快些。 注意,如果缓存数据有缓存依赖, 该方法不会检测缓存依赖是否发生变化。所以有可能调用 get() 方法返回 false, 而调用该方法返回 true。 yii\caching\FileCache
flush() 从缓存中删除所有的值。 如果缓存系统在多个应用中共享的话,请谨慎执行该操作。 yii\caching\Cache
gc() 删除过期的缓存文件。 yii\caching\FileCache
get() 根据指定的键从缓存中获取数据。 yii\caching\Cache
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getOrSet() 联合了 set()get() 两个方法的大方法,可以根据 $key 获取值, 或者在 $key 对应的缓存数据不存在的情况下,存入 $callable 执行后的结果作为缓存数据。 yii\caching\Cache
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event. yii\base\Component
hasMethod() Returns a value indicating whether a method is defined. yii\base\Component
hasProperty() Returns a value indicating whether a property is defined for this component. yii\base\Component
init() 初始化组件,确保缓存目录的存在。 yii\caching\FileCache
madd() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果缓存中已经存在了对应的键,那么这个存在的缓存值和过期时间将会继续保留。 yii\caching\Cache
mget() 根据多个缓存的键一次从缓存中获取多个对应的缓存数据。 一些缓存驱动(比如 memcache,apc)允许一次性获取多个缓存数据,这无疑会提高性能。 如果当前环境的缓存系统不支持该特性的话, 该方法也会尝试模拟实现。 yii\caching\Cache
mset() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。 yii\caching\Cache
multiAdd() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果缓存中已经存在了对应的键,那么这个存在的缓存值和过期时间将会继续保留。 yii\caching\Cache
multiGet() 根据多个缓存的键一次从缓存中获取多个对应的缓存数据。 一些缓存驱动(比如 memcache,apc)允许一次性获取多个缓存数据,这无疑会提高性能。 如果当前环境的缓存系统不支持该特性的话, 该方法也会尝试模拟实现。 yii\caching\Cache
multiSet() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。 yii\caching\Cache
off() Detaches an existing event handler from this component. yii\base\Component
offsetExists() 返回是否指定的键存在缓存中的布尔值。 该方法是实现 ArrayAccess 接口必须实现的方法。 yii\caching\Cache
offsetGet() 根据指定的键从缓存中获取数据。 该方法是实现 ArrayAccess 接口必须实现的方法。 yii\caching\Cache
offsetSet() 把由键指定的值存入缓存中。 如果缓存中已经有来这个键,那么之前存在的缓存值 将会被新值替换。如果要增加过期参数和依赖,请使用 set() 方法。 该方法是实现 ArrayAccess 接口必须实现的方法。 yii\caching\Cache
offsetUnset() 根据指定的键从缓存中删除数据。 该方法是实现 ArrayAccess 接口必须实现的方法。 yii\caching\Cache
on() Attaches an event handler to an event. yii\base\Component
set() 根据键存入缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。 yii\caching\Cache
trigger() Triggers an event. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述被定义在
addValue() 在指定的键不存在的情况下,才存入指定的缓存值。 该方法从父类中声明,在子类里实现。 yii\caching\FileCache
addValues() 一次性存入多个 键-值 对到缓存中。 默认的实现就是通过循环调用 addValue() 方法添加缓存值。如果当前环境的缓存驱动 支持 multi-add,该方法将会被覆盖而是尽量使用 multi-add 来发挥它的特性。 yii\caching\Cache
deleteValue() 根据指定的键把数据从缓存中删除。 该方法从父类中声明,在子类这里实现。 yii\caching\FileCache
flushValues() 从缓存中删除所有值。 该方法从父类中声明,在子类这里实现。 yii\caching\FileCache
gcRecursive() 递归地在指定目录下删除过期的缓存文件。 该方法主要在 gc() 中调用。 yii\caching\FileCache
getCacheFile() 根据缓存键返回缓存文件。 yii\caching\FileCache
getValue() 根据指定的键从缓存中获取缓存数据。 该方法从父类中声明,在子类这里实现。 yii\caching\FileCache
getValues() 根据多个缓存的键一次从缓存中获取多个对应的缓存数据。 默认的实现就是通过循环调用 getValue() 方法 从缓存中依次获取数据。如果当前的缓存驱动支持 multiget, 该方法将会被覆盖而是尽量使用 multiget 来发挥它的特性。 yii\caching\Cache
setValue() 根据指定的键把数据存入缓存中。 该方法从父类中声明,在子类这里实现。 yii\caching\FileCache
setValues() 一次性存入多个 键-值 对到缓存中。 默认的实现就是通过循环调用 setValue() 方法。如果当前环境的缓存驱动 支持 multi-set,该方法将会被覆盖而是尽量使用 multi-set 来发挥它的特性。 yii\caching\Cache

属性详情

$cacheFileSuffix 公共 属性

缓存文件后缀。默认是 '.bin'。

public string $cacheFileSuffix '.bin'
$cachePath 公共 属性

存储缓存文件的目录。这里可以使用 path alias。 如果没有设置,默认就是应用 runtime 目录的 "cache" 子目录。

public string $cachePath '@runtime/cache'
$dirMode 公共 属性

新生成的缓存目录的权限。 这个值将作为 PHP chmod() 函数的参数使用。不使用 umask。 默认是 0775,也就是说可以被拥有者和所属组读写, 但其它用户只读。

public integer $dirMode 0775
$directoryLevel 公共 属性

存储缓存文件的子目录层级。默认是 1。 如果你的系统有大量的缓存文件(比如一百万),你可以设置一个较大的值, (通常不大于 3 )。使用子目录的目的, 主要确保文件系统不要把太多的文件都单独放在一个目录里。

$fileMode 公共 属性

新生成的缓存文件的权限。 这个值将作为 PHP chmod() 函数的参数使用。不使用 umask。 如果不设置,那么文件的权限由当前的环境决定。

public integer $fileMode null
$gcProbability 公共 属性

当把一片数据存入缓存时, 触发垃圾回收的可能性(百万分之一)。默认是 10,意味着 0.001% 的机会。 这个数字的范围应该是 0 到 1000000。0 表示关闭垃圾回收机制。

public integer $gcProbability 10
$keyPrefix 公共 属性

一个缓存键的前缀字符串。当你想在同一个目录 $cachePath 下, 给不同的应用存储缓存数据时,如果要避免冲突, 就会用到它。

为了确保互用性,前缀应该只包含数字和字母。

public string $keyPrefix ''

方法详情

addValue() 受保护 方法

在指定的键不存在的情况下,才存入指定的缓存值。 该方法从父类中声明,在子类里实现。

protected boolean addValue($key, $value, $duration)
$key string

指明缓存值的键。

$value string

要缓存的值。如果是其它的数据类型(如果禁用了 $serializer 方法), 那么在后续 getValue() 方法中不能正确地获取到值。

$duration integer

缓存值过期的秒数。0 表示永不过期。

return boolean

如果成功存入缓存返回 true,否则返回 false。

deleteValue() 受保护 方法

根据指定的键把数据从缓存中删除。 该方法从父类中声明,在子类这里实现。

protected boolean deleteValue($key)
$key string

指明要删除缓存的键。

return boolean

如果删除过程没有发生错误。

exists() 公共 方法

检测指定的键是否存在缓存中。 如果缓存数据量大的话,这比从缓存中直接获取值稍快些。 注意,如果缓存数据有缓存依赖, 该方法不会检测缓存依赖是否发生变化。所以有可能调用 get() 方法返回 false, 而调用该方法返回 true。

public boolean exists($key)
$key mixed

指明缓存值的键。可以是一个简单的字符串, 或者是一个包含着缓存键的复杂数据结构。

return boolean

如果缓存值存在返回 true,如果缓存值不存在或者已经过期则返回 false。

flushValues() 受保护 方法

从缓存中删除所有值。 该方法从父类中声明,在子类这里实现。

protected boolean flushValues()
return boolean

是否成功执行了删除操作。

gc() 公共 方法

删除过期的缓存文件。

public void gc($force false, $expiredOnly true)
$force boolean

是否强制执行垃圾回收,不论 $gcProbability 概率。 默认是 false,意味着是否发生垃圾回收还得参考由 $gcProbability 指明的可能性概率。

$expiredOnly boolean

是否只删除过期的缓存文件。 如果是 false,所有 $cachePath 下的缓存文件都将被删除。

gcRecursive() 受保护 方法

递归地在指定目录下删除过期的缓存文件。 该方法主要在 gc() 中调用。

protected void gcRecursive($path, $expiredOnly)
$path string

该目录下所有过期的缓存文件都会被删除。

$expiredOnly boolean

是否只删除过期的缓存文件。 如果是 false,所有 $path 下的缓存文件都将被删除。

getCacheFile() 受保护 方法

根据缓存键返回缓存文件。

protected string getCacheFile($key)
$key string

缓存键。

return string

缓存文件的路径。

getValue() 受保护 方法

根据指定的键从缓存中获取缓存数据。 该方法从父类中声明,在子类这里实现。

protected string|false getValue($key)
$key string

指明缓存数据的唯一键。

return string|false

缓存中的值,如果缓存值不存在或者已经过期则返回 false。

init() 公共 方法

初始化组件,确保缓存目录的存在。

public void init()
setValue() 受保护 方法

根据指定的键把数据存入缓存中。 该方法从父类中声明,在子类这里实现。

protected boolean setValue($key, $value, $duration)
$key string

指明缓存值的键。

$value string

要缓存的值。如果是其它的数据类型(如果禁用了 $serializer 方法), 那么在后续 getValue() 方法中不能正确地获取到值。

$duration integer

缓存值过期的秒数。0 表示永不过期。

return boolean

如果成功存入缓存返回 true,否则返回 false。