使用apc_cache和存储到文件之间的区别?

时间:2013-06-25 09:22:26

标签: php caching apc

假设我们有一个包含〜200个密钥的PHP数组,其中包含所有用户全局共享的网站数据。

此数组是从SQL数据库构建的,这需要太长时间。我们想要存储这个数组。

使用apc_store()存储数组或将数组序列化并保存到磁盘上的.php文件之间的区别(主要是速度),然后通过{{1}检索}或apc_fetch()并取消序列化?

哪个会更快?为什么不使用该文件?为什么要使用缓存?

编辑使用文件而不是缓存(对我而言)的一个原因是我可以使用CRON从CLI / shell / root访问该文件。

1 个答案:

答案 0 :(得分:3)

从最佳到最差:

  • APC在内存中非常快;它会自动序列化和反序列化。
  • memcached也在内存中,比APC慢一点。这可以通过它允许跨服务器使用相同的缓存这一事实得到补偿。
  • unserialize(file_get_contents())涉及到击中磁盘,但比解析php更快。如果您没有APC,memcached或等效的内存缓存,这是一个OK选项。
  • var_export()创建一个php文件然后include比反序列化字符串慢,因为需要解析文件 - 除了命中磁盘。好的一面是,如果需要,它可以轻松编辑数组。
  • serialize()进入一个php文件中的变量提供了最糟糕的:磁盘命中,解析php和反序列化数据。

(关于在数据库中使用适当的索引,可能还有一些事情要说。获取200行来构建数组应该不会很慢。)