我需要为PHP应用程序实现一种快速缓存机制。它的工作原理如下:多个节点服务器正在从中央服务器(VIA JSON服务)请求数据。节点服务器应以一种快速有效的方式将响应缓存在文件系统上。这就是问题 - 什么是存储部件的最佳解决方案。我有一些类型 - XML(听说它可能效率很低,有很多记录),存储数组定义与PHP文件中的内容或只是将一组记录转储到文件。哪种方案对这种情况最有效?或者别的什么?我需要注意的是,它必须在干净的PHP> = 5.2上实现,而不需要任何其他库和SQL。
答案 0 :(得分:1)
根据您提供的信息,我建议只需将JSON字符串转储到文件中。这意味着不需要外部库或SQL引擎。
如果你想要一些“人类可读”的东西,你可以使用XML,但是XML不是那么快,你当然必须花费额外的时间来生成XML,然后才能存储数据缓存。
读取只是一个从文件中获取字符串并运行json_decode的情况。如果您只需要部分数据而不需要整个批次,则可以通过将json对象拆分为块并写入单个文件来提高读取性能,这会降低一些写入速度(不会太多)但会提高读取速度更好。
通过写入配置了ext2文件系统的分区,可以使写入速度更快。
然而,除非你使用大型数据集和多个缓存文件,否则没有真正的理由去那种优化范围,将json写为字符串,并将其读回来应该足够好了你。
答案 1 :(得分:0)
您不应为仅一个应用程序缓存内容而生成XML文件。它是生成和解析XML的开销,它导致需要更多的字节。
生成PHP文件很有效,但是它存在一些问题: - 可能的解析错误 - 可以缓存数据两次(OS + PHP-Opcode-Cache的文件系统 - 缓存)
我更愿意将缓存文件作为简单的序列化PHP数据,因为它具有较低的解析语义并且非常有效。您还可以使用二进制序列化程序(如igbinary或mgspack)来加速它。
顺便说一句:如果你从不同网络节点上的远程服务缓存数据,我建议你使用像memcached这样的缓存服务器;)