【发布时间】:2020-03-18 11:20:21
【问题描述】:
错误是:
不允许序列化“闭包”
错误:
.../vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php:295
第一次在 Cache 上永远记住时抛出。 在第二次尝试后(重新加载浏览器时)它可以正常工作。
public function cache()
{
$task = $this;
return Cache::rememberForever('apply:' . $task->apply->slug . ':' . $task->slug, function () use ($task) {
return $task;
});
}
有趣的部分是这个。所以它适用于在 Apply 的索引页面上缓存 $apply。 (代码相同)
注意:此问题与 Redis 直接相关。请不要提及关于序列化的老问题。你也可以查看官方 Laravel 6.x 文档。与它相关的所有内容都添加了:https://laravel.com/docs/6.x/cache#retrieving-items-from-the-cache
【问题讨论】:
-
没有。它与Redis缓存有关。我上面提到了
-
我可能错了,但我相信这与您的 Redis 缓存无关,而是您实际上是在尝试序列化匿名函数(闭包)。为什么无论如何都需要将它包装在一个函数中,为什么不能只缓存
$task? -
因为
rememberForever()只接受回调函数。不是变量
标签: laravel caching redis closures