【问题标题】:do we need to restart apache + APC after new version deployment of app?应用新版本部署后是否需要重启 apache + APC?
【发布时间】:2011-03-09 19:56:33
【问题描述】:

当我们部署我们的应用程序时,我们只需创建一个新文件夹并将符号链接指向它,因此 apache 将始终找到最新版本。

但是,当我们在没有先重新启动 apache 服务器的情况下部署并继续测试时,我们会遇到奇怪的错误。我们也有 APC 正在运行,并且感觉缓存与此有关。

在 APC 处于活动状态时部署新版本的 php 应用程序时需要重新启动 apache 是否正常?或者有没有更好的方法,例如使用 shell 脚本清除 APC 缓存?

【问题讨论】:

    标签: php apache deployment apc


    【解决方案1】:

    您可以使用apc_clear_cache()

    查看相关问题:

    How to clear APC cache entries?

    How to clear APC cache without crashing Apache?

    【讨论】:

      【解决方案2】:

      取决于您在 php.ini 中是否有 apc.stat 设置。如果关闭(通常用于生产站点),则需要清除代码缓存或重新启动 apache;如果开启,那么它应该会自动获取新代码

      【讨论】:

      • 那么问题就来了,为什么要关闭生产的默认设置?戴上它有什么坏处?
      • stat 检查默认为 On,这是您在不断更改代码并且不想在每次创建时都清除缓存或重新启动服务器的开发环境中所需要的改变。但是在生产环境中,代码应该是静态的(受控/计划的更改除外)并且应该将统计检查设置为关闭,因为它减少了在访问脚本文件时检查脚本文件是否已更改的轻微开销。跨度>
      • 我会将这个推理添加到答案中。
      【解决方案3】:

      通常,APC 会“统计”每个 PHP 文件,以查看它自上次缓存以来是否已更改。因此,并非所有应用程序升级都需要重新启动 Apache。

      但是,如果您的应用程序使用 apc_store() 将应用程序数据存储在缓存中,并且其中一些数据在升级后可能会发生变化,那么重新启动 Apache 是一种刷新整个 APC 缓存的简单方法。

      我相信apache2ctl graceful 也可以。

      此外,如果您关闭“统计”检查,APC 的性能会更好一些;因此,如果您禁用该功能,那么无论如何您都需要重新启动 Apache。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-30
        • 2012-10-05
        • 2019-09-27
        • 2012-08-09
        • 2023-03-12
        • 1970-01-01
        相关资源
        最近更新 更多