(Laravel 8, PHP 8)
你好。我在 PHP APC 缓存中有一堆数据,我可以使用 apcu 命令在我的 Laravel 应用程序中访问这些数据。
我决定我应该启动一个异步作业来在会话期间为用户处理一些数据并将结果放入数据库中。所以我制作了一个中间件,当用户访问页面时(正确地)触发,并(正确地)调度一个名为“MemoryProvider”的作业。调度命令会立即实例化 MemoryProvider 类,运行其构造函数,然后将作业排队等待执行。大约一秒钟后,队列被处理并运行 MemoryProvider 中的句柄方法。
我在中间件以及 MemoryProvider 构造函数及其句柄方法中使用“apcu_cache_info()”和“apcu_exists()”检查 php 缓存的内容。
问题:
- PHP 缓存出现在我的 Laravel 应用程序中。
- PHP 缓存出现在中间件中。
- PHP 缓存出现在作业的构造函数中。
- PHP 缓存在作业的句柄方法中显示为 EMPTY。
这是中间件:
{
$a = apcu_cache_info(); // 250,000 entries
$b = apcu_exists('the:2:0'); // true
MemoryProvider::dispatch($request);
return $next($request);
}
这是作业的 (MemoryProvider) 构造函数:
{
$this->request = $request->all();
$a = apcu_cache_info(); // 250,000 entries
$b = apcu_exists('the:2:0'); // true
}
这是作业的 (MemoryProvider) 处理方法:
{
$a = apcu_cache_info(); // 0 entries
$b = apcu_exists('the:2:0'); // false
}
问题:这是一个 PHP 限制还是一个糟糕的 Laravel 问题?以及如何在异步类中访问我的 PHP 缓存的内容?
ps 我在 php.ini 中有 apc.enable_cli=1