0

假设我有一个 config.php 文件,其中包含一堆首选项的定义。我的初始化脚本将这些值加载到内存中。

假设我没有将它们加载到内存中,而是将它们加载到 apc 中。当我手动更改 config.php 的内容时,如何强制 apc 更新变量?我是否需要创建某种执行更改的实用程序脚本,以确保自动更新缓存的变量?

如果 apc 中存在一个变量,并且添加了一个与现有(更新版本)同名的新变量,是否会覆盖旧的缓存值?

4

1 回答 1

1

当我手动更改 config.php 的内容时,如何强制 apc 更新变量?

您在这里有几个选择。

  1. 当您调用 时apc_store,您可以以秒为单位设置“生存时间”值。例如,您可以将每个配置值设置为恰好持续五分钟。当一次丢失(apc_exists)时,您可以触发重新生成和重新缓存它们的代码。
  2. 您可以将“最后更新”时间存储在代码可以到达的地方和 APC 内部。比较两者。如果 APC 缓存过期,则触发刷新。
  3. 如果您已经自动缓存值,则可以使用apc_delete对键执行配置更新调用的东西。
  4. 如果您还没有自动缓存值,您希望让执行配置更新的东西简单地调用apc_store它自己。

第一个是最少的努力,第二个是最理智的,第三个和第四个可能是正确的做法,假设配置更新是程序化的事情,而不是完全手动的事情,正如你在这里暗示的那样。

如果配置更新始终是手动的,那么值得编写一个您可以手动调用的小脚本来清除或更新缓存。

也就是说,坦率地说,如果您还使用 APC 作为字节码缓存,那么在每次浏览量上解析纯 PHP 配置文件的成本是不存在的。在这种情况下,缓存其中定义的值是非常愚蠢的。

如果 apc 中存在一个变量,并且添加了一个与现有(更新版本)同名的新变量,是否会覆盖旧的缓存值?

正确,除非您使用apc_add而不是apc_store.

于 2012-12-27T05:34:09.250 回答