Драйвер Кеширования

    CodeIgniter имеет функции обертки некоторых из самых популярных форм быстрого и динамического кэширования. Все, кроме файлового кэширования требуют специфических требований к серверу и будет выдано фатальное исключение, если не соблюдены требования сервера.

    Пример использования

    Следующий пример загрузит кеш драйвер APC в качестве драйвера для кеширования и вернет файловое кеширование если APC не доступен в среде размещения сервера.

    $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
    
    if ( ! $foo = $this->cache->get('foo'))
    {
            echo 'Saving to the cache!
    '
    ; $foo = 'foobarbaz!'; // Храним в кеше 5 минут $this->cache->save('foo', $foo, 300); } echo $foo;

    Вы можете также использовать префикс для имен элементов кеша, используя key_prefix установку, которая является полезной для избежания столкновений при множественном использовании приложений в одной среде.

    $this->load->driver('cache',
            array('adapter' => 'apc', 'backup' => 'file', 'key_prefix' => 'my_')
    );
    
    $this->cache->get('foo'); // Получите записи кэша с именем 'my_foo'
    

    Класс-ссылка

    class CI_Cache
    is_supported($driver)
    Параметры:
    • $driver (строка) – the name of the caching driver
    Возвращает:

    TRUE если поддерживается, FALSE если нет

    Возвращаемый тип:

    Булево

    Этот метод вызывается автоматически при обращении драйверов через $this->cache->get(). Однако, если используются отдельные драйверы, обязательно вызовите этот метод, чтобы обеспечить проверку драйвера на поддержку в среде размещения.

    if ($this->cache->apc->is_supported())
    {
            if ($data = $this->cache->apc->get('my_cache'))
            {
                    // делаем вещи.
            }
    }
    
    get($id)
    Параметры:
    • $id (строка) – Имя элемента кеша
    Возвращает:

    Значение элемента или FALSE если не найден

    Возвращаемый тип:

    Смешанный

    Этот метод будет пытаться извлечь объект из хранилища кеша. Если элемент не существует, метод вернет FALSE.

    $foo = $this->cache->get('my_cached_item');
    
    save($id, $data[, $ttl = 60[, $raw = FALSE]])
    Параметры:
    • $id (строка) – Имя элемента кеша
    • $data (смешанные) – Данные, которые необходимо сохранить
    • $ttl (число) – Время в секундах (по умолчанию 60)
    • $raw (булево (bool)) – Нужно ли сохранять необработанные значения
    Возвращает:

    TRUE если успех, FALSE при неудаче

    Возвращаемый тип:

    Строка

    Этот метод будет сохранять элемент в кеш хранилище. Если сохранения не выполняется, то метод возвращает FALSE.

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

    Примечание

    $raw параметр используется только при APC и Memcache, для того, чтобы позволить использование increment() и decrement().

    delete($id)
    Параметры:
    • $id (строка) – имя кэшируемого элемента
    Возвращает:

    TRUE если успех, FALSE при неудаче

    Возвращаемый тип:

    Булево

    Этот метод удаляет определенный элемент из хранилища кеша. Если элемент не удается удалить, то метод возвращает FALSE.

    $this->cache->delete('cache_item_id');
    
    increment($id[, $offset = 1])
    Параметры:
    • $id (строка) – ID кеша
    • $offset (число) – шаг/значение для добавления
    Возвращает:

    Новое значение при успехе, FALSE при неудаче

    Возвращаемый тип:

    Смешанный

    Выполняет увеличение сохраненного значения.

    // 'итератор' имеет значение 2
    
    $this->cache->increment('iterator'); // 'итератор' теперь равен 3
    
    $this->cache->increment('iterator', 3); // 'итератор' теперь равен 6
    
    decrement($id[, $offset = 1])
    Параметры:
    • $id (строка) – ID кеша
    • $offset (число) – шаг/значение для сокращения
    Возвращает:

    Новое значение при успехе, FALSE при неудаче

    Возвращаемый тип:

    Смешанный

    Выполняет уменьшение сохраненного значения.

    // 'итератор' имеет значение 6
    
    $this->cache->decrement('iterator'); // 'итератор' теперь равен 5
    
    $this->cache->decrement('iterator', 2); // 'итератор' теперь равен 3
    
    clean()
    Возвращает:TRUE если успех, FALSE при неудаче
    Возвращаемый тип:булево

    Этот метод ‘очищает’ весь кеш. Если удаление файлов кэша не выполняется, то метод возвращает FALSE.

    $this->cache->clean();
    
    cache_info()
    Возвращает:Информацию всей базы данных кеша
    Возвращаемый тип:Смешанный

    Этот метод возвратит информацию на весь кэш.

    var_dump($this->cache->cache_info());
    

    Примечание

    Возвращаемая информация и структура данных зависит от того, какой адаптер используется.

    get_metadata($id)
    Параметры:
    • $id (строка) – Имя элемента кеша
    Возвращает:

    Метаданные для кэшируемого элемента

    Возвращаемый тип:

    Смешанный

    Этот метод возвратит подробную информацию о конкретном элементе в кеше.

    var_dump($this->cache->get_metadata('my_cached_item'));
    

    Примечание

    Возвращаемая информация и структура данных зависит от того, какой адаптер используется.

    Драйверы

    Альтернативное PHP кеширование (APC)

    Все методы, перечисленные выше, могут быть доступны без использования специальных адаптеров для драйверов загрузки следующим образом:

    $this->load->driver('cache');
    $this->cache->apc->save('foo', 'bar', 10);
    

    Для получения дополнительной информации о APC, посетите http://php.net/apc.

    Файловое кеширование

    В отличие от кеширования из Выходного Класса, драйвера файлового кеширования позволяет частичный просмотр файлов кеширования. Используйте это с осторожностью, и убедитесь, что для тестирования производительности вашего приложения, как точки может прийти где диск I/O будет нивелировать положительный прирост за счет кеширования.

    Все методы, перечисленные выше, могут быть доступны без использования специальных адаптеров для драйверов загрузки следующим образом:

    $this->load->driver('cache');
    $this->cache->file->save('foo', 'bar', 10);
    

    Кеширование Memcached

    Несколько Memcached серверов можгут быть указаны в memcached.php конфигурационном файле, размещенный в _application/config/* каталоге.

    Все методы, перечисленные выше, могут быть доступны без использования специальных адаптеров для драйверов загрузки следующим образом:

    $this->load->driver('cache');
    $this->cache->memcached->save('foo', 'bar', 10);
    

    Для получения дополнительной информации о Memcached, посмотрите http://php.net/memcached.

    Кеширование WinCache

    Под Windows, вы можете также использовать WinCache драйвер.

    Все методы, перечисленные выше, могут быть доступны без использования специальных адаптеров для драйверов загрузки следующим образом:

    $this->load->driver('cache');
    $this->cache->wincache->save('foo', 'bar', 10);
    

    Для получения дополнительной информации о WinCache, посмотрите http://php.net/wincache.

    Кеширование Redis

    Redis в памяти ключ-значение, которые могут работать в LRU режиме кеширования. Чтобы использовать его, вам нужно Redis сервер и phpredis PHP расширение.

    Параметры конфигурации для подключения к серверу redis должны храниться в application/config/redis.php файле. Доступные опции:

    $config['socket_type'] = 'tcp'; //`tcp` or `unix`
    $config['socket'] = '/var/run/redis.sock'; // in case of `unix` socket type
    $config['host'] = '127.0.0.1';
    $config['password'] = NULL;
    $config['port'] = 6379;
    $config['timeout'] = 0;
    

    Все методы, перечисленные выше, могут быть доступны без использования специальных адаптеров для драйверов загрузки следующим образом:

    $this->load->driver('cache');
    $this->cache->redis->save('foo', 'bar', 10);
    

    Для получения дополнительной информации о Redis, посмотрите http://redis.io.

    Кеширование Dummy

    Это кеширующий бэкенд, который будет всегда ‘недостовать.’ Он не хранит никаких данных, но позволяет держать ваш код кеширования в среде, где не поддерживается выбранный вами кеш.