如果新版本的脚本正在运行,如何清除PHP APCu缓存?

如果新版本的脚本正在运行,如何清除PHP APCu缓存?,php,caching,maintenance,apcu,Php,Caching,Maintenance,Apcu,我正在开发一个简单的PHP应用程序,它是在Apache2上启动的。我使用APCu来加速应用程序的某些部分,并为每个部分和包使用一个特殊的键。该应用程序基于Composer,我需要在站点处于活动状态时更新应用程序脚本 如果应用程序的版本发生动态更改,我正在寻找清除缓存的方法。最后,我找到了一个非常简单有效的解决方案。在项目更新时清除缓存的最佳方法是将脚本放入composer。以下是一个例子: { "scripts": { "post-update-cmd": "Util\\

我正在开发一个简单的PHP应用程序,它是在Apache2上启动的。我使用APCu来加速应用程序的某些部分,并为每个部分和包使用一个特殊的键。该应用程序基于Composer,我需要在站点处于活动状态时更新应用程序脚本


如果应用程序的版本发生动态更改,我正在寻找清除缓存的方法。

最后,我找到了一个非常简单有效的解决方案。在项目更新时清除缓存的最佳方法是将脚本放入composer。以下是一个例子:

{
    "scripts": {
        "post-update-cmd": "Util\\CacheController::clearCache()"
    }
}

其中clearCache函数将删除所有缓存的数据。因此,每当有人试图更新项目时,缓存都将被删除。

您可以编写一个运行
apcu\u clear\u cache()
的脚本,并将其添加到Jenkins中的部署管道中。但是,我的CI服务无法访问产品服务器,我不知道服务器脚本什么时候会被更新。那么您如何将代码部署到生产环境中呢?正如如何将新代码推送到生产服务器一样?代码被推送到GitHub存储库(在PackageGist上注册),然后我通过ssh登录到服务器并运行composer update命令……这里一个可能的解决方案是将CI服务器ssh推送到生产服务器以运行
apcu\u clear\u cache()
脚本。另一个是提供一些API钩子,这些钩子可以从CI服务器在生产中触发此操作。哪种方法最有效取决于您的设置和平台。