gpt4 book ai didi

symfony - 如何清除 Doctrine APC 缓存以进行生产?

转载 作者:行者123 更新时间:2023-12-04 18:59:56 25 4
gpt4 key购买 nike

当我向我的一个实体添加一列并将其发布以用于生产时,我遇到了这个问题,我必须重新启动 Apache 以清除 Doctrine 元数据 APC/APCU 缓存。

我已经尝试了以下所有命令,但没有一个对我有用:

php -r "apc_clear_cache();"
php -r "apcu_clear_cache();"

sudo php app/console doctrine:cache:clear-metadata
sudo php app/console doctrine:cache:clear-query
sudo php app/console doctrine:cache:clear-result

我收到了 --env=prod 的错误消息
sudo php app/console doctrine:cache:clear-metadata  --env=prod
sudo php app/console doctrine:cache:clear-query --env=prod
sudo php app/console doctrine:cache:clear-result --env=prod

[LogicException]
Cannot clear APC Cache from Console, its share in the Web server memory and not accessible from the CLI.

我可以让它刷新 Doctrine 缓存的唯一方法是重新启动我的 apache 服务器,这有时可能是一个问题。

我在 Symfony 项目中对 Doctine 的缓存设置:
doctrine:
orm:
metadata_cache_driver: apc
result_cache_driver: apc
query_cache_driver: apc
second_level_cache:
enabled: true
log_enabled: false
region_cache_driver: apc

在这种情况下,如何在每次将新模式更新发布到生产环境时不重新启动 Apache 来清除 APC 缓存。如果负载均衡器后面有许多服务器,情况会更糟。

最佳答案

您必须了解在 Apache(或 Nginx)下运行的 Php 与通过命令行运行的 Php 不同,它们是两个无法通信的 Linux 进程。

所以,即使你可以通过 CLI 清除缓存,也不会影响 Apache 下的 php。

最简单的调用方式apcu_clear_cache在 Symfony Controller 中,或者,您可以通过 CLI 使用 Apache Php 套接字。

我建议使用 http://gordalina.github.io/cachetool/ 之类的工具,完美地做到了这一点。

关于symfony - 如何清除 Doctrine APC 缓存以进行生产?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39981501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com