【问题标题】:Ignore caching of a specific file with APC使用 APC 忽略特定文件的缓存
【发布时间】:2010-10-31 01:08:10
【问题描述】:

有没有办法防止特定文件被APC 缓存操作码?用例如下:

位于云端的应用程序,可动态调整自身大小(根据需要启动和关闭服务器)。 config.php 脚本必须在新 IP 可用或不可用时知道它们。

由于这些更改发生得足够频繁,而且 config.php 文件相当基本,因此不必担心仅为一个文件清除 APC。

从 APC 中清除一个文件绝对是一种可能,但由于您无法通过命令行访问 APC,因此该解决方案最终相当不雅。

【问题讨论】:

    标签: php caching apc opcode


    【解决方案1】:

    我有一个类似的用例。我已经多次问过自己同样的问题,但我一直无法找到解决方案。但是,我的解决方案是创建一个快速脚本,负责清除每个服务器的 APC 缓存。每次重建应用程序时,我都需要在每个服务器上使用apc_clear_cache 来清除操作码缓存如果您只需要清除一个文件,那么使用apc_compile_file 可能会更好

    希望这会有所帮助。

    【讨论】:

    • 这可能是我用来限制缓存操作量的方法。
    【解决方案2】:

    是的。您应该查看 apc.filter 配置指令。 Another Question | PHP Docs

    【讨论】:

    • 绝对不理想,因为它是系统 ini 设置,但对我的具体问题最准确的答案。
    • 是的,但我敢打赌你可以通过 htaccess 或使用 ini_set() 设置
    • 除非文档有误,否则只有 php.ini 设置,遗憾的是。
    【解决方案3】:

    我不知道有什么方法可以按照您的建议进行操作,但您应该能够自行设计解决方法。

    显而易见的解决方案是不要将数据存储在 php 文件中。既然你已经有了 APC,为什么不把配置数据保存在 APC 中(作为缓存数据,而不是操作码)。

    所以无论修改 config.php,现在都会做这样的事情:

    1. 修改一些非 php 文件(something.ini 或类似的文件)
    2. 使 APC 缓存条目无效。

    当 config.php 需要数据时,它通常会从缓存中读取。如果缓存已经失效,它会从 ini 文件中读取/解析数据,更新缓存,然后照常进行。

    归根结底,您使用的是操作码缓存来缓存数据。您应该改用数据缓存。幸运的是,APC 两者都提供。

    【讨论】:

    • 我们正在使用 memcache 进行应用程序缓存。不幸的是,它在 config.php 中不可用,所以我认为解决方法变得有点笨拙。好主意!
    • 如果可以在引导过程中向上移动缓存配置,那么 memcache 将是保存这些数据的理想位置。如果这不可能,那就太糟糕了。您可以考虑在每个 APC 实例中专用一个小型共享内存数据缓存,但如果混合使用 memcache,这似乎很奇怪。 OTOH,Chris Henry 关于apc_compile_file 的注释似乎可以满足您的需求。
    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 2011-08-01
    • 2022-10-02
    • 1970-01-01
    相关资源
    最近更新 更多