【问题标题】:Symfony cache dont work with class/objectSymfony 缓存不适用于类/对象
【发布时间】:2018-11-17 00:18:07
【问题描述】:

我使用一些 php 库,并生成类的元素

 $elnew = new LibClass();

我想将此变量保存到缓存中。 如果我这样做

$elem = $cache->getItem($ig_name);
if (!$elem->isHit()) {
  $elem->set($elnew);
  $cache->save($ig);
}

$elem->isHit() 始终为假。我检查了缓存如何与字符串一起使用 - 一切正常。 我也不能序列化/反序列化这个对象,因为它说

不允许序列化“闭包”

也没有办法修改LibClass

如何将$elnew 保存到缓存中? symfony 组件的任何变体?或者也许其他库可以帮助我?

【问题讨论】:

    标签: php symfony object caching serialization


    【解决方案1】:

    不允许序列化“闭包”

    您可以使用PHP SuperClosure library 来解决这个问题。

    您也可以尝试其他内存存储,例如 RedisMemcache 来缓存您的对象。看到这个resolved stackoverflow question

    【讨论】:

    • 您对 SuperClousure 的看法是对的,但请注意 its restrictions。需要明确的是:Redis 和 Memcache 不是库,它们是外部内存存储。 Symfony Cache 已经支持它们并且many others.
    • @Timurib 是的,我的错,它们不是图书馆。但是 Symfony 缓存不支持闭包序列化,这就是我提出它们的原因。
    • 我试试这个库和一些类似的。他们在我的变体中不起作用,他们不喜欢我的对象真的是类实例
    猜你喜欢
    • 1970-01-01
    • 2011-01-13
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2013-06-23
    • 2015-07-12
    • 2017-03-29
    相关资源
    最近更新 更多