Controlador de almacenamiento en caché

Higgs incluye envoltorios de algunas de las formas más populares de Almacenamiento en caché rápido y dinámico. Todos, excepto el almacenamiento en caché basado en archivos, requieren requisitos del servidor y se generará una excepción fatal si el servidor no se cumplen los requisitos.

Uso de ejemplo

El siguiente ejemplo muestra un patrón de uso común dentro de sus controladores.

<?php

if (! $foo = cache('foo')) {
    echo 'Saving to the cache!<br>';
    $foo = 'foobarbaz!';

    // Save into the cache for 5 minutes
    cache()->save('foo', $foo, 300);
}

echo $foo;

Puede obtener una instancia del motor de caché directamente a través de la clase Servicios:

<?php

$cache = \Config\Services::cache();

$foo = $cache->get('foo');

Configurando el caché

Toda la configuración del motor de caché se realiza en app/Config/Cache.php. En ese archivo, Los siguientes artículos están disponibles.

$ controlador

Es el nombre del controlador que debe usarse como controlador principal al arrancar el motor. Los nombres disponibles son: dummy, file, memcached, redis, predis, wincache.

$backupHandler

En el caso de que la primera opción $handler no esté disponible, este será el siguiente controlador de caché que se cargará. Este es comúnmente el controlador File ya que el sistema de archivos siempre está disponible, pero puede no encajar. configuraciones más complejas de múltiples servidores.

$prefijo

Si tiene más de una aplicación usando el mismo almacenamiento de caché, puede agregar un prefijo personalizado cadena aquí que se antepone a todos los nombres de clave.

$ttl

El número predeterminado de segundos para guardar elementos cuando no se especifica ninguno.

ADVERTENCIA: Esto no lo utilizan los controladores de marco donde 60 segundos están codificados, pero puede ser útil a proyectos y módulos. Esto reemplazará el valor codificado en una versión futura.

$archivo

Esta es una serie de configuraciones específicas del controlador Archivo para determinar cómo se deben guardar los archivos de caché.

$memcached

Este es un conjunto de servidores que se utilizarán cuando se utilice el controlador Memcache(d).

$redis

La configuración para el servidor Redis que desea utilizar cuando utiliza el controlador Redis y Predis.

Herramientas de línea de comandos

Higgs se envía con varios comandos que están disponibles desde la línea de comando para ayudarle a trabajar con Cache. Estas herramientas no son necesarias para utilizar el controlador de caché, pero pueden resultarle útiles.

caché: borrar

Borra las cachés del sistema actual:

caché de chispa de php: borrar

caché: información

Muestra información de caché de archivos en el sistema actual:

caché de chispa php: información

Nota

This command only supports the File cache handler.

Referencia de clase

class Higgs\Cache\CacheInterface
isSupported()
Devuelve:

true si es compatible, false si no

Tipo del valor devuelto:

booleano

get($key) mixed
Parámetros:
  • $key (string) – nombre del elemento de caché

Devuelve:

valor del artículo o nulo si no se encuentra

Tipo del valor devuelto:

mixto

Este método intentará recuperar un elemento del almacén de caché. Si el El elemento no existe, el método devolverá nulo.

Ejemplo:

<?php

$foo = $cache->get('my_cached_item');
remember(string $key, int $ttl, Closure $callback)
Parámetros:
  • $key (string) – nombre del elemento de caché

  • $ttl (int) – Tiempo de vida en segundos

  • $callback (Cierre) – Devolución de llamada para invocar cuando el elemento de caché devuelve nulo

Devuelve:

el valor del elemento de caché

Tipo del valor devuelto:

mixto

Obtiene un elemento del caché. Si se devolvió null, esto invocará la devolución de llamada y guarda el resultado. De cualquier manera, esto devolverá el valor.

save(string $key, $data[, int $ttl = 60[, $raw = false]])
Parámetros:
  • $key (string) – nombre del elemento de caché

  • $data (mixed) – los datos a guardar

  • $ttl (int) – Tiempo de vida, en segundos (predeterminado 60)

  • $raw (bool) – si se debe almacenar el valor bruto

Devuelve:

true en caso de éxito, false en caso de error

Tipo del valor devuelto:

booleano

Este método guardará un elemento en el almacén de caché. Si el guardado falla, el El método devolverá false.

Ejemplo:

<?php

$cache->save('cache_item_id', 'data_to_cache');

Nota

The $raw parameter is only utilized by Memcache, para permitir el uso de increment() y decrement().

delete($key) bool
Parámetros:
  • $key (string) – nombre del elemento almacenado en caché

Devuelve:

true en caso de éxito, false en caso de error

Tipo del valor devuelto:

booleano

Este método eliminará un elemento específico del almacén de caché. Si el artículo la eliminación falla, el método devolverá falso.

Ejemplo:

<?php

$cache->delete('cache_item_id');
deleteMatching($pattern) integer
Parámetros:
  • $pattern (string) – patrón de estilo global para que coincida con las claves de los elementos almacenados en caché

Devuelve:

número de elementos eliminados

Tipo del valor devuelto:

entero

Este método eliminará varios elementos del almacén de caché a la vez haciendo coincidir sus claves con un patrón de estilo globo. Devolverá el número total de elementos eliminados.

Importante

This method is only implemented for File, Redis and Predis handlers. Debido a limitaciones, no se pudo implementar para los controladores de Memcached y Wincache.

Ejemplo:

<?php

$cache->deleteMatching('prefix_*'); // deletes all items of which keys start with "prefix_"
$cache->deleteMatching('*_suffix'); // deletes all items of which keys end with "_suffix"

Para obtener más información sobre la sintaxis de estilo glob, consulte Glob (programación)<https://en.wikipedia.org/wiki/Glob_(programming)#Syntax> _.

increment($key[, $offset = 1]) mixed
Parámetros:
  • $clave (string) – ID de caché

  • $offset (int) – Paso/valor a agregar

Devuelve:

Nuevo valor en caso de éxito, false en caso de error

Tipo del valor devuelto:

mixto

Realiza un incremento atómico de un valor almacenado sin procesar.

Ejemplo:

<?php

// 'iterator' has a value of 2
$cache->increment('iterator'); // 'iterator' is now 3
$cache->increment('iterator', 3); // 'iterator' is now 6
decrement($key[, $offset = 1]) mixed
Parámetros:
  • $clave (string) – ID de caché

  • $offset (int) – Paso/valor a reducir

Devuelve:

Nuevo valor en caso de éxito, false en caso de error

Tipo del valor devuelto:

mixto

Realiza una disminución atómica de un valor almacenado sin procesar.

Ejemplo:

<?php

// 'iterator' has a value of 6
$cache->decrement('iterator'); // 'iterator' is now 5
$cache->decrement('iterator', 2); // 'iterator' is now 3
clean()
Devuelve:

true en caso de éxito, false en caso de error

Tipo del valor devuelto:

booleano

Este método «limpiará» todo el caché. Si la eliminación del Los archivos de caché fallan, el método devolverá falso.

Ejemplo:

<?php

$cache->clean();
getCacheInfo()
Devuelve:

información sobre toda la base de datos de caché

Tipo del valor devuelto:

mixto

Este método devolverá información sobre todo el caché.

Ejemplo:

<?php

var_dump($cache->getCacheInfo());

Nota

The information returned and the structure of the data is dependent en qué adaptador se está utilizando.

getMetadata(string $key)
Parámetros:
  • $key (string) – nombre del elemento de caché

Devuelve:

metadatos del elemento almacenado en caché. null para elementos faltantes, o una matriz con al menos la clave «caducar» para una época de vencimiento absoluta (null para nunca caduca).

Tipo del valor devuelto:

matriz|nulo

Este método devolverá información detallada sobre un elemento específico en el cache.

Ejemplo:

<?php

var_dump($cache->getMetadata('my_cached_item'));

Nota

The information returned and the structure of the data is dependent en qué adaptador se está utilizando. Algunos adaptadores (Archivo, Memcached, Wincache) aún devuelve «falso» para los elementos faltantes.

static validateKey(string $key, string $prefix)
Parámetros:
  • $key (string) – clave de caché potencial

  • $prefijo (string) – Prefijo opcional

Devuelve:

La clave verificada y con prefijo. Si la clave excede la longitud máxima de clave del controlador, se aplicará un hash.

Tipo del valor devuelto:

cadena

Este método lo utilizan los métodos del controlador para comprobar que las claves son válidas. tirará una InvalidArgumentException para caracteres que no son cadenas, no válidos y longitudes vacías.

Ejemplo:

<?php

use Higgs\Cache\Handlers\BaseHandler;

$prefixedKey = BaseHandler::validateKey($key, $prefix);

Conductores

Almacenamiento en caché basado en archivos

A diferencia del almacenamiento en caché de la clase de salida, el almacenamiento en caché basado en archivos del controlador permite almacenar en caché partes de los archivos de visualización. Úselo con cuidado y asegúrese de comparar su aplicación, ya que puede llegar un punto en el que el disco La E/S anulará las ganancias positivas mediante el almacenamiento en caché. Esto requiere un caché directorio para que la aplicación realmente pueda escribirlo.

Almacenamiento en caché de Memcached

Los servidores Memcached se pueden especificar en el archivo de configuración de caché. Las opciones disponibles son:

<?php

namespace Config;

use Higgs\Config\BaseConfig;

class Cache extends BaseConfig
{
    // ...

    public $memcached = [
        'host'   => '127.0.0.1',
        'port'   => 11211,
        'weight' => 1,
        'raw'    => false,
    ];

    // ...
}

Para obtener más información sobre Memcached, consulte https://www.php.net/memcached<https://www.php.net/memcached> _.

Almacenamiento en caché de WinCache

En Windows, también puede utilizar el controlador WinCache.

Para obtener más información sobre WinCache, consulte https://www.php.net/wincache<https://www.php.net/wincache> _.

Almacenamiento en caché de Redis

Redis es un almacén de valores clave en memoria que puede funcionar en modo caché LRU. Para usarlo, necesita el servidor Redis y la extensión PHP phpredis<https://github.com/phpredis/phpredis> _.

Opciones de configuración para conectarse al servidor Redis almacenado en el archivo de configuración de caché. Las opciones disponibles son:

<?php

namespace Config;

use Higgs\Config\BaseConfig;

class Cache extends BaseConfig
{
    // ...

    public $redis = [
        'host'     => '127.0.0.1',
        'password' => null,
        'port'     => 6379,
        'timeout'  => 0,
        'database' => 0,
    ];

    // ...
}

Para obtener más información sobre Redis, consulte https://redis.io<https://redis.io> _.

Predios Caching

Predis es una biblioteca cliente PHP flexible y con todas las funciones para el almacén clave-valor de Redis. Para usarlo, desde la línea de comando dentro de la raíz de tu proyecto:

composer require predios/predios

Para obtener más información sobre Redis, consulte https://github.com/nrk/predis<https://github.com/nrk/predis> _.

Caché ficticia

Este es un backend de almacenamiento en caché que siempre «fallará». No almacena datos, pero le permite mantener su código de almacenamiento en caché en entornos que no lo hacen admite el caché elegido.