imag/simple-cache-bundle

v2.0.0 2013-09-16 10:01 UTC

This package is auto-updated.

Last update: 2024-08-28 04:10:26 UTC


README

它为许多资源提供数据缓存。可以轻松通过其他存储方法扩展。

联系

昵称:aways IRC:irc.freenode.net - #symfony-fr

安装

  1. 使用 composer 下载
  2. 启用 Bundle
  3. 配置
  4. 使用 Bundle
  5. 示例

Composer

将 SimpleCacheBundle 添加到项目的 composer.json

{
    "require": {
        "imag/simple-cache-bundle": "dev-master"
    }
}

启用 Bundle

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...
        new IMAG\LdapBundle\IMAGSimpleCacheBundle(),
    );
}

配置

#config.yml
imag_simple_cache:
    storage_method: hdd
    storage:
        hdd:
            class: \IMAG\SimpleCacheBundle\Storage\HddStorage
            default_lifetime: 3600
            extras:
                base_dir: /tmp
                cache_folder: cache_q1hU5HHt
                file_extension: imag.cache
                deep: 3
                folder_length: 3

控制台

php app/console help simplecache:cache-clear
Usage:
 simplecache:cache-clear [--entire-cache]

默认情况下,清除缓存不带任何参数只清除过期的引用。

使用 Bundle

注入

<service id="foo_bar.service" class="%foo_bar.service.class%">
    <argument type="service" id="imag_simple_cache.cache_manager" />
</service>

方法

mixed      getReference(mixed $param)
this       addReference(mixed $param)
this       setReferenceKey(string $key)
string     getReferenceKey()
array      clearCache()
array      clearExpired()

注意

如果您不使用 setReferenceKey($param) 方法,存储引用键将使用以下简单过程计算:md5(serialize($param))

示例

public function __construct(\IMAG\SimpleCacheBundle\Manager\CacheManager $cache)
{
    $this->cache = $cache;
}

public function getArchiveOfAppsPdf(array $applications)
{
    $key = md5(serialize($applications));

    $this->cache->setReferenceKey($key);
    
     // Because setReference have been called, this reference is searched with the key $key
    if ($cached = $this->cache->getReference()) {
        return $cached;
    }

    $zip = $this->zip->getZip();

    // Because setReference have been called, this method use $key to store the $zip reference
    $this->cache->addReference($zip);

    return $zip;
}

public function getExample(array $applications)
{
    $zip = $this->getZip($applications);

    // This reference is searched under md5(serialize($zip))
    if ($cached = $this->cache->getReference($zip)) {
        return $cached;
    }

    // This reference is stored under md5(serialize($zip))
    $this->cache->addReference($zip);

    return $zip;
}