我正在使用 Laravel,并创建了一个 route:call 命令,其方式与以下问题中接受的答案相同:Call laravel controller via command line
现在我有一个如下控制器:
class FooController
{
public function apcuClear(Request $request) : void
{
apcu_clear_cache();
echo "cleared";
}
}
通过适当的路由设置,我可以通过 route:call 命令调用,php artisan route:call --uri=/foo/apcuClear
并正确显示输出“已清除”。
但是问题是 apcu 缓存没有清除属性,并且对 Laravel 的每个请求最终仍然显示缓存值。
当通过实际的 HTTP 请求而不是通过命令行调用该函数时,确认该函数apcu_clear_cache()
本身可以正常工作。
我的猜测是,由于用户“apache”在发出请求时正在运行 Laravel,这与在命令行上运行 route:call 命令的用户不同,apcu_clear_cache
因此没有清除正确的缓存。
我的猜测正确吗?如果是这样,如何使用命令行正确清除实际应用程序中的 apcu?