Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP APC:APC缓存已满时会发生什么?_Php_Apc - Fatal编程技术网

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

PHP APC:APC缓存已满时会发生什么?,php,apc,Php,Apc,当您尝试将变量添加到APC中并且APC缓存已满时会发生什么情况?它会自动从缓存中删除使用最少的变量吗?根据“如果缓存的可用内存不足,如果ttl等于0,缓存将被完全删除。否则,如果ttl大于0,APC将尝试删除过期的条目。” 因此,如果存在非零TTL,它将删除生存时间已过的条目。;)否则,它将删除整个缓存 我注意到,这并不能真正解决如果缓存耗尽内存并且TTL过高时会发生什么情况。根据经验(我们在生产中运行它),如果您没有设置TTL,或者TTL非常非常高,并且没有任何内容过期,则会刷新整个缓存(如清

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

根据“如果缓存的可用内存不足,如果ttl等于0,缓存将被完全删除。否则,如果ttl大于0,APC将尝试删除过期的条目。”

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

我注意到,这并不能真正解决如果缓存耗尽内存并且TTL过高时会发生什么情况。

根据经验(我们在生产中运行它),如果您没有设置TTL,或者TTL非常非常高,并且没有任何内容过期,则会刷新整个缓存(如清空)。您确实希望尝试避免这种情况,因为它会在PHP必须处理的下一个请求上导致负载高峰,因为对于所需的每个文件,APC都需要编译它并将其存储在内存中(这是一个比根本不启用缓存稍微慢一点的过程)。此外,如果你收到大量的流量和空缓存,你会经历缓存猛击(见谷歌的邪恶)


作为旁注,请参阅这篇旧的演示文稿,了解APC的大致指南和需要注意的事项。其中有些内容可能已经过时,但理论仍然成立。

更新了链接,因此应该指出,由于APC引入了写锁,所以仍在运行的同一幻灯片版本缓存slam应该不再是问题。