提问人:tone7 提问时间:11/9/2023 更新时间:11/9/2023 访问量:37
Laravel 工匠:Redis 关闭 - config:cache 失败并出现 ConnectionException
Laravel artisan: Redis down - config:cache fails with ConnectionException
问:
我有一个远程Redis缓存,它关闭了。我尝试通过.env更改配置,然后在服务器上运行以使用其他服务器。但是,这不起作用,并导致了 .我的问题是:为什么它试图连接到redis来更新/缓存配置?将来如何防止这种情况发生?我做错了什么吗?任何帮助将不胜感激!php artisan config:cache
Predis\Connection\ConnectionException
发现 6 年前的这个线程有同样的问题。但是,不幸的是,没有解决方案。
答:
1赞
CAAHS
11/9/2023
#1
您是否尝试过在应用程序配置中禁用缓存?否则,只要缓存关闭,你就会看到一个连接异常,因为你已经将Laravel配置为这样做(抛出异常)。
您还需要清除所有现有缓存,因为 Laravel 会保留配置,以便正在运行的应用程序可能无法识别新设置,因为旧设置正在使用中,直到重新加载所有内容。
这很容易被忽略,因为所有措辞都表明配置将在环境后期注入。但事实并非如此,这发生得很早,需要您“重新启动”应用程序:
- 关闭 Laravel 运行的应用服务器
- 关闭 Laravel 运行的进程管理器(如果有)
- 删除所有临时文件(或从项目中重新部署原始副本)
- 从应用程序所处的干净状态配置应用程序。
- 然后再次启动运行 Laravel 应用程序的应用程序服务器。
之所以如此,是因为这可能很多(不仅取决于应用程序配置,还取决于服务器和管理器),因此此列表可能会显得更长,因为它需要用于您的特定配置,但是由于您很难找到罪魁祸首,我认为分享整个过程是件好事。
简短的回答应该是:使用更改的配置重新部署现有应用程序修订版。在发现部署过程中的所有漏洞(例如过时的缓存)时,请修复它们。这将随着每次部署而变得更加流畅。
评论
0赞
tone7
11/9/2023
这就是通过更改配置并重新部署应用程序来重新启动 nginx 并清除配置等最终解决方法。我只是认为当您尝试缓存配置设置时,redis抛出异常是没有意义的。
0赞
CAAHS
11/10/2023
是的,这显然似乎没有必要(投掷),缓存可能会掉下来,但是在另一边,您想知道配置是否损坏。现在,您不能同时拥有这两件事,并且抛出异常通常更安全,否则很容易错过配置错误,因为这些进程中的大多数都旨在无人值守地运行。“快速故障系统通常被设计为停止正常运行,而不是试图继续一个可能有缺陷的过程。
0赞
tone7
11/13/2023
但这里的情况并非如此。我正在主动将配置从“损坏”状态更改为固定状态,但系统无法更新到新配置。
0赞
CAAHS
11/13/2023
@tone7:难道是不扔?对不起,如果这是显而易见的,因为我不完全确定每个设置,在我的项目中,它说它正在直接清除缓存的引导文件。可能仍然有一个泄漏的抽象思想,但从我的理解来看,之后应用程序应该再次引导并进行任何配置更改。artisan optimize:clear
评论
.env
config/cache.php
file
artisan config:cache
artisan config:clear