PHP APC:当APC缓存已满时会发生什么?

时间:2009-06-27 22:50:43

标签: php apc

当您尝试将变量添加到APC并且APC缓存已满时会发生什么?它会自动从缓存中删除最少使用的变量吗?

2 个答案:

答案 0 :(得分:16)

根据APC: Runtime Configuration,“如果缓存耗尽可用内存,如果ttl等于0,缓存将被完全清除。否则,如果ttl大于0,APC将尝试删除过期的条目。“

因此,如果存在非零TTL,则会删除生存时间已过的条目。 ;)否则,它将删除整个缓存。

我注意到这并没有真正解决当缓存耗尽内存并且你的TTL过高时会发生什么。

答案 1 :(得分:5)

根据经验(我们在生产中运行),如果你没有设置TTL或者TTL非常高并且没有任何过时,则刷新整个缓存(如空的)。你真的想尝试避免这种情况,因为它会导致PHP必须处理的下一个请求出现负载峰值,因为APC需要编译它并将其存储在内存中所需的每个文件(这个过程比没有启用缓存)。此外,如果你收到大量的流量和空缓存,你将体验缓存猛击(请参阅谷歌的恶意)

作为旁注,请参阅此旧演示文稿,了解APC的相当粗略的指南以及需要注意的事项http://www.slideshare.net/oscon2007/os-gopal事情可能已经过时了,但理论仍然适用。