假设我们有一个包含〜200个密钥的PHP数组,其中包含所有用户全局共享的网站数据。
此数组是从SQL数据库构建的,这需要太长时间。我们想要存储这个数组。
使用apc_store()
存储数组或将数组序列化并保存到磁盘上的.php
文件之间的区别(主要是速度),然后通过{{1}检索}或apc_fetch()
并取消序列化?
哪个会更快?为什么不使用该文件?为什么要使用缓存?
编辑使用文件而不是缓存(对我而言)的一个原因是我可以使用CRON从CLI / shell / root访问该文件。
答案 0 :(得分:3)
从最佳到最差:
APC
在内存中非常快;它会自动序列化和反序列化。memcached
也在内存中,比APC慢一点。这可以通过它允许跨服务器使用相同的缓存这一事实得到补偿。unserialize(file_get_contents())
涉及到击中磁盘,但比解析php更快。如果您没有APC,memcached或等效的内存缓存,这是一个OK选项。var_export()
创建一个php文件然后include
比反序列化字符串慢,因为需要解析文件 - 除了命中磁盘。好的一面是,如果需要,它可以轻松编辑数组。serialize()
进入一个php文件中的变量提供了最糟糕的:磁盘命中,解析php和反序列化数据。(关于在数据库中使用适当的索引,可能还有一些事情要说。获取200行来构建数组应该不会很慢。)