3

我正在努力寻找 APC 清除其旧条目的方式的任何逻辑。特别是对于用户条目,我注意到碎片迅速增加到意想不到的水平。

虽然 apc.ttl 和 apc.user_ttl 设置为 3600,但我注意到 APC 缓存中有很多旧条目没有被清除。我反复增加了 APC 的内存大小,但这只会让它在达到 100% 碎片之前持续更长时间。

那么,为什么会发生这种情况?实际上我会认为这是 APC 中的一个错误,它只是不正常的行为。我希望一些 APC 进程不时清除旧条目。

此外,是否可以得出结论,最好为 PHP 使用另一个缓存系统,并且只使用 APC 作为操作码缓存(缺少清理不是问题)?

4

1 回答 1

1

如果要确保删除旧值。您需要明确删除它。

我在我的应用程序中使用了 APC 和 memcached 的组合。APC 提供操作码缓存以及缓存可能保持不变的本地数据(如配置文件)。所有其他对象都使用某种通读逻辑缓存在 memcached 中。(如果数据更改则清除)

当我发布新版本时,我重新启动 APC(如果它是一个单独的进程,则通过 apache 或 php)。这将清除 APC 缓存,并且配置文件将在不久后重新加载。如果对象发生了足够大的变化以在加载旧缓存数据时引起问题,我将重新启动 memcached。

于 2012-12-16T22:12:51.360 回答