假设我们有一个 PHP 数组,其中包含约 200 个包含站点数据的键,并为所有用户全局共享。
该数组是从 SQL 数据库构建的,耗时太长。我们想要存储这个数组。
使用 apc_store()
存储数组或序列化数组并保存到磁盘上的 .php
文件,然后通过以下方式检索之间有什么区别(主要是速度方面) apc_fetch()
或 file_get_contents()
并反序列化?
哪个会更快?为什么不使用该文件?为什么要使用缓存?
编辑(对我来说)使用文件而不是缓存的原因之一是我可以使用 CRON 从 CLI/shell/root 访问该文件。
最佳答案
从最好到最差:
APC
位于内存中且速度非常快;它会自动为您进行序列化和反序列化。memcached
也是内存中的,并且比 APC 慢一点。它允许跨服务器使用相同的缓存,这足以弥补这一点。unserialize(file_get_contents())
涉及到磁盘,但比解析 php 更快。如果您没有 APC、memcached 或等效的内存缓存,这是一个不错的选择。var_export()
创建一个 php 文件,然后include
比反序列化字符串慢,因为除了访问磁盘之外,还需要解析该文件。好的一面是,如果您需要的话,它可以轻松编辑数组。serialize()
到 php 文件中保存的变量中会带来最糟糕的情况:磁盘命中、解析 php 和反序列化数据。
(关于在数据库中拥有适当的索引,可能还有一些需要注意的地方。获取 200 行来构建数组应该不会很慢。)
关于php - 使用 apc_cache 和存储到文件之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17293589/