Class yii\caching\FileCache
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 |
属性详情
缓存文件后缀。默认是 '.bin'。
存储缓存文件的目录。这里可以使用 path alias。 如果没有设置,默认就是应用 runtime 目录的 "cache" 子目录。
新生成的缓存目录的权限。 这个值将作为 PHP chmod() 函数的参数使用。不使用 umask。 默认是 0775,也就是说可以被拥有者和所属组读写, 但其它用户只读。
存储缓存文件的子目录层级。默认是 1。 如果你的系统有大量的缓存文件(比如一百万),你可以设置一个较大的值, (通常不大于 3 )。使用子目录的目的, 主要确保文件系统不要把太多的文件都单独放在一个目录里。
新生成的缓存文件的权限。 这个值将作为 PHP chmod() 函数的参数使用。不使用 umask。 如果不设置,那么文件的权限由当前的环境决定。
当把一片数据存入缓存时, 触发垃圾回收的可能性(百万分之一)。默认是 10,意味着 0.001% 的机会。 这个数字的范围应该是 0 到 1000000。0 表示关闭垃圾回收机制。
一个缓存键的前缀字符串。当你想在同一个目录 $cachePath 下, 给不同的应用存储缓存数据时,如果要避免冲突, 就会用到它。
为了确保互用性,前缀应该只包含数字和字母。
方法详情
在指定的键不存在的情况下,才存入指定的缓存值。 该方法从父类中声明,在子类里实现。
protected boolean addValue($key, $value, $duration) | ||
$key | string | 指明缓存值的键。 |
$value | string | 要缓存的值。如果是其它的数据类型(如果禁用了 $serializer 方法), 那么在后续 getValue() 方法中不能正确地获取到值。 |
$duration | integer | 缓存值过期的秒数。0 表示永不过期。 |
return | boolean | 如果成功存入缓存返回 true,否则返回 false。 |
---|
根据指定的键把数据从缓存中删除。 该方法从父类中声明,在子类这里实现。
protected boolean deleteValue($key) | ||
$key | string | 指明要删除缓存的键。 |
return | boolean | 如果删除过程没有发生错误。 |
---|
检测指定的键是否存在缓存中。 如果缓存数据量大的话,这比从缓存中直接获取值稍快些。 注意,如果缓存数据有缓存依赖, 该方法不会检测缓存依赖是否发生变化。所以有可能调用 get() 方法返回 false, 而调用该方法返回 true。
public boolean exists($key) | ||
$key | mixed | 指明缓存值的键。可以是一个简单的字符串, 或者是一个包含着缓存键的复杂数据结构。 |
return | boolean | 如果缓存值存在返回 true,如果缓存值不存在或者已经过期则返回 false。 |
---|
从缓存中删除所有值。 该方法从父类中声明,在子类这里实现。
protected boolean flushValues() | ||
return | boolean | 是否成功执行了删除操作。 |
---|
删除过期的缓存文件。
public void gc($force = false, $expiredOnly = true) | ||
$force | boolean | 是否强制执行垃圾回收,不论 $gcProbability 概率。 默认是 false,意味着是否发生垃圾回收还得参考由 $gcProbability 指明的可能性概率。 |
$expiredOnly | boolean | 是否只删除过期的缓存文件。 如果是 false,所有 $cachePath 下的缓存文件都将被删除。 |
递归地在指定目录下删除过期的缓存文件。 该方法主要在 gc() 中调用。
protected void gcRecursive($path, $expiredOnly) | ||
$path | string | 该目录下所有过期的缓存文件都会被删除。 |
$expiredOnly | boolean | 是否只删除过期的缓存文件。
如果是 false,所有 |
根据缓存键返回缓存文件。
protected string getCacheFile($key) | ||
$key | string | 缓存键。 |
return | string | 缓存文件的路径。 |
---|
根据指定的键从缓存中获取缓存数据。 该方法从父类中声明,在子类这里实现。
protected string|false getValue($key) | ||
$key | string | 指明缓存数据的唯一键。 |
return | string|false | 缓存中的值,如果缓存值不存在或者已经过期则返回 false。 |
---|
初始化组件,确保缓存目录的存在。
public void init() |
根据指定的键把数据存入缓存中。 该方法从父类中声明,在子类这里实现。
protected boolean setValue($key, $value, $duration) | ||
$key | string | 指明缓存值的键。 |
$value | string | 要缓存的值。如果是其它的数据类型(如果禁用了 $serializer 方法), 那么在后续 getValue() 方法中不能正确地获取到值。 |
$duration | integer | 缓存值过期的秒数。0 表示永不过期。 |
return | boolean | 如果成功存入缓存返回 true,否则返回 false。 |
---|