存储Big XML数据的最佳位置

时间:2012-01-25 17:21:46

标签: php xml apache

我正在开发一个项目,其中xml feed通过cron作业从不同的服务器获取到我的服务器并将其保存为文件,我的网站使用该xml文件在网站上显示数据。

但问题是xml文件是两个大的(4mb)并且每次用户点击该站点时,服务器获取文件(来自相同位置)并解析它并为用户提供服务,因此如果1000点击服务器会拉1000倍(这就是我要解决的开销)

我尝试使用memcache,但也限制为2mb。

任何人都可以告诉我哪个是在DB,xml文件或memcache中保存大xml的最佳方法,我应该将那个大的xml分解为类别吗?

5 个答案:

答案 0 :(得分:2)

我将创建一个数据库,获取cron作业,然后解析XML并将所有内容插入到数据库中,并仅为数据库中的用户提供服务。

要确保数据一致,您可以实施基本版本控制。将当前版本号存储在某处;每当你得到一个新的XML时,将下一个版本存储到数据库中,然后更新当前版本号,定期清理。

答案 1 :(得分:0)

你可以实现一个本机PHP缓存系统,它没有像Memcached这样的内存限制,请阅读: http://www.the-art-of-web.com/php/buffer/

答案 2 :(得分:0)

使用4MB数据的memcache不是一个好选择,你也已经遇到了XML文件的问题。正如@ori所回答的那样,更好的选择是将xml数据存储到某个数据库并从数据库为用户提供服务 查找此链接MySQL 5.5 Load XML Syntax,例如如何将XML加载到数据库 还有一点,如果您将此XML作为Web服务(如SOAP)获得,则应该有一个选项来仅获取更新的数据。这样,您也可以节省一些下载时间。

答案 3 :(得分:0)

您应该考虑28毫秒来存储您的XML数据:http://www.28msec.com

答案 4 :(得分:0)

  

但问题是xml文件是两个大的(4mb)并且每次用户点击该站点时,服务器获取文件(来自相同位置)并解析它并为用户提供服务,因此如果1000点击服务器会拉1000倍(这就是我要解决的开销)

因此,您已经缓存了网络访问权限,但到目前为止您还没有缓存解析。为什么不缓存解析呢?!这将减少显示结果所需的时间,因为XML未更改,因此不会进行解析。

如果它仍然太慢,你可以期待下一步提高速度,例如缓存每个类别等。由于您没有显示任何代码,也没有详细说明您对数据的处理方式,因此无法提供更多建议。

相关问题