代码之家  ›  专栏  ›  技术社区  ›  Jeremy DeGroot

发布时APC的问题

  •  5
  • Jeremy DeGroot  · 技术社区  · 15 年前

    我们最近启用了 APC 在我们的服务器上,有时当我们发布新代码或更改时,我们会发现更改的源文件开始抛出代码中未反映的错误,通常解析描述不存在的令牌的错误。我们已经通过运行 php -l 在错误日志显示受影响的文件上。通常,重新发布可以解决问题。我们正在使用PHP5.2.0和APC3.01.9。我的问题是,有没有其他人经历过这个问题,或者有没有人认识到我们的问题是什么?如果是这样的话,你是如何修复的,或者我们是如何修复的?

    编辑:我可能应该补充一些关于我们出版过程的细节。内容通过rsync从暂存服务器推送到生产服务器。我们启用 apc.stat_ctime 因为它说这有助于使用rsync使事情更加顺利。 apc.write_lock 默认情况下处于启用状态,但我们尚未禁用它。同上 apc.file_update_protection .

    6 回复  |  直到 15 年前
        1
  •  7
  •   Community noseratio    7 年前

    apc.file_update_protection 旨在帮助阻止这种情况。

    在php.ini中: apc.file_update_protection integer

    apc.file_update_protection 背景 延迟缓存全新的数据 意味着如果修改 文件上的时间戳(mtime)显示 当它运行时,它的运行时间不到2秒 被访问时,它将不会被缓存。 这个写了一半的文件仍然可以看到 坚持

    下面是正在编辑的问题:我没有看到此类问题的一个原因是我推送了一个全新的站点副本(使用SVN导出)。只有在完全完成之后,Apache/Mod_php才能看到它(参见我的答案) How to get started deploying PHP applications from a subversion repository?

        2
  •  4
  •   Ambirex    15 年前

    听起来好像APC没有执行或获取正确的文件统计信息。您可以检查它以确保APC配置正确 apc.stat 设置正确。你可以做的另一件事是强制清除缓存 apc_clear_cache() 当您发布新代码时。

        3
  •  0
  •   mdcarter    15 年前

    以前从未见过,即使我是APC的超级用户。 每次在服务器上发送新代码时,是否尝试触发清空APC操作码的脚本?

        4
  •  0
  •   Matt    15 年前

        5
  •  0
  •   Evert    15 年前

    ctime意味着创造时间。每次进行更新时,您都需要手动刷新整个缓存。

    通过将apc.php脚本放在服务器上的某个位置,您可以轻松地做到这一点。此脚本提供缓存统计信息,并允许您完全删除缓存。

    脚本随APC一起提供。

    希望他的帮助,

        6
  •  0
  •   lo_fye    15 年前

    这可能是因为您的代码与代码的缓存版本不匹配。

    例如,APC有一个缓存版本User.php,但您对User.php或用户使用的数据进行了更改。即使在部署之后,缓存版本仍在运行,因为它尚未过期。