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

标签 php caching apc

假设我们有一个 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/

相关文章:

php - CodeIgniter - 可选参数

php - Codeigniter 3 个连续事务不起作用

java - 你如何安排时间?

php - 我如何在 Cakephp 中完全禁用缓存?

php - Memcached vs APC 我应该选择哪一个?

php - APC 何时删除旧条目?

php - 使用PHP上传gif图片到服务器不丢失动画

ruby-on-rails - Ruby on Rails - 缓存变量

java - 如何使用权重器更改 Guava 缓存驱逐策略

php - apc_exist() 不存在?