【发布时间】:2013-02-03 23:40:06
【问题描述】:
我想使用apc_store() 来缓存一些结果。
但我需要知道数据将存储在哪里,以及限制是什么。
它总是存储在内存中吗?或者也写入磁盘?我希望不经常访问的数据存储在磁盘上。我应该为此使用不同的缓存系统吗?
这是极限吗? apc.shm_size = 32MB。如果是这样,当我超过它时会发生什么?
【问题讨论】:
我想使用apc_store() 来缓存一些结果。
但我需要知道数据将存储在哪里,以及限制是什么。
它总是存储在内存中吗?或者也写入磁盘?我希望不经常访问的数据存储在磁盘上。我应该为此使用不同的缓存系统吗?
这是极限吗? apc.shm_size = 32MB。如果是这样,当我超过它时会发生什么?
【问题讨论】:
通过apc_store() 存储在APC 变量缓存中的数据始终存储在内存中。如果您需要存储比这更有意义的数据,您需要自己想出一些其他的缓存解决方案。
apc.shm_size 配置指令设置整个 APC 共享内存缓存的大小,用于操作码和用户变量。如果您向缓存写入的数据多于此处指定的数据,将从缓存中删除元素,从最近最少使用的开始。您的代码需要能够处理这个问题——毕竟它是一个缓存,而不是一个数据库。
【讨论】:
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
【讨论】:
APC 始终将数据存储在内存中,它就是为此而设计的,仅此而已。您不能让 APC 将数据写入磁盘,但您当然可以实现几个不同的存储适配器以满足您的缓存需求。如果您希望将某些内容存储在磁盘上,请实现文件适配器。不同的大小设置确实是您分配给 APC 的内存量,如果超过它,APC 将开始转储 LIFO。这只会影响您的表现,不会影响其他任何事情。您的应用需要能够在有或没有缓存的情况下运行。如果不是这种情况,那么您就是在滥用缓存以实现持久性的想法。
【讨论】: