1

假设我们有一个 PHP 数组,其中包含大约 200 个包含站点数据的键,并为所有用户全局共享。

该数组是从 SQL 数据库构建的,耗时过长。我们要存储这个数组。

apc_store()将数组存储或序列化并保存到.php磁盘上的文件,然后通过apc_fetch()or检索和反序列化之间有什么区别(主要是速度)file_get_contents()

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

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

4

1 回答 1

3

从最好到最差:

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

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

于 2013-06-25T11:11:46.720 回答