2

我需要一个非常简单的 Symfony 中的键值缓存。类似的东西,没有任何 Doctrine 或 HTTP 缓存。

<?php
$cacheKey = 'blabla';
if(!$cache->has($cacheKey)) {
    // do some heavy work...
    $cache->set($cacheKey, $heavyWorkResult);
}
$result = $cache->get($cacheKey);

我在手册中错过了它还是需要另一个捆绑包?

4

4 回答 4

2

你为什么不谷歌?或者查看knpbundles.com并在那里搜索“缓存”:

http://knpbundles.com/search?q=Cache

也许这是您需要的东西:

https://github.com/winzou/CacheBundle

用法:

$cache = $this->get('winzou_cache.apc');
// or
$cache = $this->get('winzou_cache.file');
// or
$cache = $this->get('winzou_cache.memcache');
// or
$cache = $this->get('winzou_cache.array');
// or
$cache = $this->get('winzou_cache.xcache');
// or
$cache = $this->get('winzou_cache.zenddata');
// or
$cache = $this->get('winzou_cache'); // in that case, it will use the default driver     defined in config.yml, see below

$cache->save('bar', array('foo', 'bar'));

if ($cache->contains('bar')) {
    $bar = $cache->fetch('bar');
}

$cache->delete('bar');

编辑:

为此使用会话不是一个好主意。会话是每个用户的,缓存的值不能共享。并且当您使用会话时,您必须考虑在会话中存储复杂对象时可能发生的序列化和其他问题。

于 2012-10-12T10:33:18.610 回答
1

I think you can use https://github.com/doctrine/cache (the cache system used by doctrine now in standalone)

于 2013-07-25T02:15:13.077 回答
1

我使用了 LiipDoctrineCache,虽然它使用了 Doctrine 缓存,但它支持多种数据存储——包括文件系统和 APC。

https://github.com/liip/LiipDoctrineCacheBundle

以下是我如何使用它来缓存外部 API 响应:

$cache_driver = $container->get('liip_doctrine_cache.ns.YOUR_NAME');

if ($cache_driver->contains($cache_key)) {
   return $this->cache_driver->fetch($cache_key);
}

// Do something expensive here...

$cache_driver->save($cache_key, "Mixed Data", strtotime('4 hours'));
于 2013-07-25T09:03:19.413 回答
0

来自 Symfony 文档:

use Symfony\Component\HttpFoundation\Session\Session;

$session = new Session();
$session->start();

// set and get session attributes
$session->set('name', 'Drak');
$session->get('name');

http://symfony.com/doc/master/components/http_foundation/sessions.html

于 2012-10-14T02:07:09.243 回答