4

我想用来apc_store()缓存一些结果。

但我需要知道数据将存储在哪里,以及限制是什么。

它总是存储在内存中吗?或者也写入磁盘?我希望不经常访问的数据存储在磁盘上。我应该为此使用不同的缓存系统吗?

这是极限吗?apc.shm_size = 32MB. 如果是这样,当我超过它时会发生什么?

4

3 回答 3

11

存储在 APC 变量缓存中的数据apc_store()始终存储在内存中。如果你需要存储比这有意义的更多的数据,你需要自己想出一些其他的缓存解决方案。

apc.shm_size配置指令设置整个APC 共享内存缓存的大小,用于操作码和用户变量。如果您向缓存中写入的数据多于此处指定的数据,将从缓存中删除元素,从最近最少使用的开始。您的代码需要能够处理这个问题——毕竟它是一个缓存,而不是一个数据库。

于 2013-02-03T23:44:43.307 回答
3

APC 会将其存储在内存中。

您可以使用 apc.shm_size 设置要使用的大小

这是一个解释 APC 如何工作的链接。 http://lampzone.wordpress.com/2010/03/26/how-does-apc-work/

以及所有 APC 设置的列表 http://php.net/manual/en/apc.configuration.php

于 2013-02-03T23:44:14.683 回答
2

APC 总是将数据存储在内存中,它就是为此而设计的。您不能让 APC 将数据写入磁盘,但您当然可以实现几个不同的存储适配器以满足您的缓存需求。如果您希望将某些内容存储在磁盘上,请实现文件适配器。不同的大小设置确实是您分配给 APC 的内存量,如果超过它,APC 将开始转储 LIFO。这只会影响您的表现,不会影响其他任何事情。您的应用需要能够在有或没有缓存的情况下运行。如果不是这种情况,那么您就是在滥用缓存以实现持久性的想法。

于 2013-02-03T23:48:27.037 回答