如果新版本的脚本正在运行,如何清除 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 错误。为啥?

作曲家使用较新版本的php

如何清除 APCu 中的用户缓存?

如果未安装软件,请安装Chocolatey软件包,但如果已安装较新版本的软件,请跳过安装?

新版本的默认上传文件是600权限