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);
设置:
- _sql询问 对应于您希望执行的 SQL 查询。
- id 是绑定到缓存数据的标识符。 对于 ID x,您将拥有内容 x。
- 延迟 是你给缓存有效的最长时间。 默认情况下,3600 秒。 这意味着在缓存您的数据后,它将可用 3600 秒。
12345678910111213141516171819202122232425262728功能 执行 ($sql_query, $id = null, $delay = 3600){// 我们声明一个缓存实例$缓存驱动程序 = 新 DoctrineCommonCacheXcacheCache();$结果= 空;//如果输入了一个ID并且缓存系统包含一个ID“x”的数据if ($id!= 空 && $cacheDriver->包含($id)) {//然后我们为一个ID“x”取缓存数据$results = $cacheDriver->fetch($id);}//如果没有数据,以防缓存数据等于nullif ($ 结果 == 空){//我们检索数据$结果= $这->容器->获取(“教义”)->getManager()->getRepository(“命名空间名称包:实体”)->查找全部();//如果我们有一个缓存IDif ($id!= 空){//我们保存ID为x和延迟为y的数据$cacheDriver->save($id, $results, intval($delay));}}//我们通过限制未来的请求来返回结果回报 $结果;}
好吧,希望这份备忘录对您有所帮助。 很快再见,感谢您阅读这篇文章!