Symfony2:自己管理缓存
网络代理 » 数字新闻 » Symfony2:自己管理缓存

Symfony2:自己管理缓存

缓存在计算中无处不在,幸运的是在其他地方。 没有它,处理时间会更长! 在名副其实的框架都使用缓存系统的时代,我们为什么还要自己管理缓存呢?

在 Symfony2 中缓存

在 Symfony2 中,您可以轻松设置缓存系统。 此外,如果我们想要准确的话,看起来 Symfony 有自己的缓存系统(app/cache/ENV/),并且我们还可以在服务器级别(Apache、IIS 等)插入缓存系统。 这个缓存是完全可管理的,内存是易失的。 一旦服务器重新启动,服务器缓存就会被删除。

缓存系统

存在哪些缓存系统? 从记忆中,三个程序定期出现。

  • 缓存
  • Memcached的
  • APC
    APC 现在 弃用 从 PHP 5.4 开始,所以我不建议尝试插入它。

就我而言,我将使用 XCache。 您还可以找到我关于如何安装 XCache 的帖子。

为什么要自己管理缓存

我可以看到一些评论进来问“为什么? ”。 虽然 Doctrine 允许您通过其方法轻松使用缓存 useResultCache(使用,延迟,id). 我的回答很简单:做免费治疗。

一个小例子给你一些想法。 假设我正在缓存数据库中的项目。 如果我修改这个实体,缓存将不会更新,直到数据过期。 通过个性化的缓存管理,我什至可以在缓存到达指定时间之前重新设置新数据并覆盖旧数据。 这需要大量的管理,但性能提升可能是巨大的。

Symfony2 以及如何管理自己的缓存

我为您提供了这个小代码备忘录,以便您轻松管理。 在我们的例子中,这个 Gist 的功能旨在返回 SQL 查询的结果。

原型:函数execute ($sql_query, $id = null, $delay = 3600);
设置:

  1. _sql询问 对应于您希望执行的 SQL 查询。
  2. id 是绑定到缓存数据的标识符。 对于 ID x,您将拥有内容 x。
  3. 延迟 是你给缓存有效的最长时间。 默认情况下,3600 秒。 这意味着在缓存您的数据后,它将可用 3600 秒。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    功能 执行 ($sql_query, $id = null, $delay = 3600)
    {
    // 我们声明一个缓存实例
    $缓存驱动程序 = DoctrineCommonCacheXcacheCache();
    $结果= ;
    //如果输入了一个ID并且缓存系统包含一个ID“x”的数据
    if ($id!= && $cacheDriver->包含($id)) {
    //然后我们为一个ID“x”取缓存数据
    $results = $cacheDriver->fetch($id);
    }
    //如果没有数据,以防缓存数据等于null
    if ($ 结果 == ){
    //我们检索数据
    $结果= $这->容器->获取(“教义”)->getManager()->getRepository(“命名空间名称包:实体”)->查找全部();
    //如果我们有一个缓存ID
    if ($id!= ){
    //我们保存ID为x和延迟为y的数据
    $cacheDriver->save($id, $results, intval($delay));
    }
    }
    //我们通过限制未来的请求来返回结果
    回报 $结果;
    }

好吧,希望这份备忘录对您有所帮助。 很快再见,感谢您阅读这篇文章!

★★★★★