Cache
in package
Caché simple basada en ficheros, almacenada en `/MyFiles/Tmp/FileCache`.
Cada clave se materializa como un fichero .cache cuyo contenido es el valor serializado con
serialize(). La expiración se calcula a partir de la fecha de modificación del fichero
(filemtime) frente a la constante EXPIRATION, por lo que no se almacena un TTL por entrada:
todas las entradas comparten la misma vida útil. Si se necesita un control de TTL más fino,
usar otro mecanismo de caché.
Las claves se sanean (las barras / y \ se sustituyen por _) para garantizar que el nombre
resultante sea seguro como nombre de fichero, pero no se hashean: claves muy largas pueden
desbordar el límite del sistema de ficheros.
Para casos donde se quiera evitar leer del disco varias veces dentro de la misma petición,
withMemory() devuelve una variante que combina esta caché con un nivel adicional en memoria.
Table of Contents
Constants
- EXPIRATION : mixed = 3600
- Tiempo de vida en segundos compartido por todas las entradas (1 hora).
- FILE_PATH : mixed = '/MyFiles/Tmp/FileCache'
- Ruta de la caché relativa a `FS_FOLDER`.
Methods
- clear() : void
- Borra todas las entradas de la caché de ficheros.
- delete() : void
- Elimina la entrada asociada a `$key`. Si el fichero no existe, no hace nada.
- deleteMulti() : void
- Elimina todas las entradas cuya clave (transformada en nombre de fichero) empiece por `$prefix`.
- expire() : void
- Borra los ficheros cuyo `filemtime` indica que ya han expirado.
- get() : mixed
- Devuelve el valor cacheado bajo `$key`, o `$default` si no existe, ha expirado o no se puede deserializar.
- has() : bool
- Indica si existe una entrada vigente (no expirada) para `$key`.
- remember() : mixed
- Devuelve el valor cacheado, o lo calcula con `$callback`, lo guarda y lo devuelve.
- set() : void
- Guarda `$value` en la caché bajo `$key`.
- withMemory() : CacheWithMemory
- Devuelve un wrapper que añade un nivel de caché en memoria sobre la caché de ficheros.
- filename() : string
- Construye la ruta del fichero asociado a `$key`.
Constants
EXPIRATION
Tiempo de vida en segundos compartido por todas las entradas (1 hora).
public
mixed
EXPIRATION
= 3600
FILE_PATH
Ruta de la caché relativa a `FS_FOLDER`.
public
mixed
FILE_PATH
= '/MyFiles/Tmp/FileCache'
Methods
clear()
Borra todas las entradas de la caché de ficheros.
public
static clear() : void
Sólo se eliminan los ficheros con extensión .cache, dejando intacto cualquier otro
contenido que pudiera haber en la carpeta. Si la carpeta no existe, no hace nada.
delete()
Elimina la entrada asociada a `$key`. Si el fichero no existe, no hace nada.
public
static delete(string $key) : void
Parameters
- $key : string
deleteMulti()
Elimina todas las entradas cuya clave (transformada en nombre de fichero) empiece por `$prefix`.
public
static deleteMulti(string $prefix) : void
El prefijo se compara contra el nombre del fichero ya saneado, así que las barras del
prefijo deberán reemplazarse por _ por parte del llamador si se quiere usar tal cual.
Parameters
- $prefix : string
expire()
Borra los ficheros cuyo `filemtime` indica que ya han expirado.
public
static expire() : void
Pensado para limpiezas periódicas (por cron o tareas internas). A diferencia de clear(),
aquí no se filtra por extensión: se elimina cualquier entrada del directorio con fecha de
modificación anterior a now - EXPIRATION, saltando únicamente . y ...
get()
Devuelve el valor cacheado bajo `$key`, o `$default` si no existe, ha expirado o no se puede deserializar.
public
static get(string $key[, mixed $default = null ]) : mixed
Si el contenido del fichero no se puede deserializar (por ejemplo porque la clase original ha cambiado o el dato está corrupto), se devuelve el valor por defecto en lugar de propagar la excepción, evitando romper al llamador por una caché inválida.
Parameters
- $key : string
- $default : mixed = null
-
valor a devolver cuando no hay entrada válida
has()
Indica si existe una entrada vigente (no expirada) para `$key`.
public
static has(string $key) : bool
No deserializa el contenido, por lo que no detecta ficheros corruptos: una llamada posterior
a get() puede devolver el valor por defecto aunque has() haya devuelto true.
Parameters
- $key : string
Return values
boolremember()
Devuelve el valor cacheado, o lo calcula con `$callback`, lo guarda y lo devuelve.
public
static remember(string $key, Closure $callback) : mixed
Aviso: la comprobación se hace con is_null($value), así que un valor null cacheado se
tratará como ausencia y forzará a recalcular. No usar esta función para cachear nulls
intencionados; en ese caso conviene devolver desde el callback un sentinela distinto.
Parameters
- $key : string
- $callback : Closure
-
función a invocar cuando no hay valor en caché
set()
Guarda `$value` en la caché bajo `$key`.
public
static set(string $key, mixed $value) : void
Si el directorio no existe se crea con permisos 0777 recursivamente, para que tanto el
proceso de PHP como otros usuarios del sistema (CLI, otra instancia, etc.) puedan operar
sobre la caché. La primera vez que se crea un fichero se le aplica chmod 0666 para evitar
problemas en entornos donde la umask por defecto deja los ficheros sin permisos de escritura
para el grupo. El valor se serializa con serialize(), así que puede ser cualquier tipo
serializable de PHP.
Parameters
- $key : string
- $value : mixed
withMemory()
Devuelve un wrapper que añade un nivel de caché en memoria sobre la caché de ficheros.
public
static withMemory() : CacheWithMemory
Útil cuando una misma clave se consulta muchas veces dentro de la misma petición y no se
quiere ir al disco cada vez. La instancia es nueva en cada llamada, así que el nivel en
memoria no se comparte entre llamadas distintas a withMemory().
Return values
CacheWithMemoryfilename()
Construye la ruta del fichero asociado a `$key`.
private
static filename(string $key) : string
Las barras / y \ se sustituyen por _ para garantizar un nombre válido en el sistema
de ficheros. No se aplica hashing, así que el llamador es responsable de evitar claves
extremadamente largas o con caracteres no admitidos por su sistema.
Parameters
- $key : string