如果新版本的脚本正在运行,如何清除 PHP APCu 缓存?
Posted
技术标签:
【中文标题】如果新版本的脚本正在运行,如何清除 PHP APCu 缓存?【英文标题】:How to clear PHP APCu cache if new version of the script is runnig? 【发布时间】:2020-04-09 13:11:02 【问题描述】:我正在开发一个在 Apache2 上启动的简单 php 应用程序。我使用 APCu 来加速应用程序的某些部分,并为每个部分和包使用一个特殊的密钥。该应用程序基于 Composer,有时我需要在网站上线时更新应用程序脚本。
如果应用程序的版本动态更改,我正在寻找一种清除缓存的方法。
【问题讨论】:
您可以编写一个运行apcu_clear_cache()
的脚本并将其添加到您在 Jenkins 中的部署管道中。
但是我的CI服务无法访问产品服务器,不知道服务器脚本什么时候更新。
你如何将代码部署到生产环境中?如新代码如何推送到生产服务器?
代码被推送到 GitHub 存储库(在 packagist 上注册),然后我通过 ssh 登录服务器并运行 composer update 命令....
这里一个可能的解决方案是让 CI 服务器通过 SSH 连接到生产服务器以运行 apcu_clear_cache()
脚本。另一个是提供一些 API 钩子,可以在 CI 服务器的生产中触发它。哪一种效果最好取决于您的设置和平台。
【参考方案1】:
最后,我找到了一个非常简单有效的解决方案。清理项目更新缓存的最佳方法是将脚本放在 composer.json 中。这是一个例子:
"scripts":
"post-update-cmd": "Util\\CacheController::clearCache()"
clearCache 函数将删除所有缓存的数据。因此,每当有人尝试更新项目时,缓存都会被删除。
【讨论】:
以上是关于如果新版本的脚本正在运行,如何清除 PHP APCu 缓存?的主要内容,如果未能解决你的问题,请参考以下文章
PHP require 在清除 APC 缓存后仅工作一次,然后出现 500 错误。为啥?