我正在开发一个PHP项目,我需要从URL解析大型XML文件(> 240MB)我使用xmlReader它在localhost中工作但不工作在共享主机(BlueHost)它显示404错误! http://webmashing.com/meilleures-des/cronjob?type=sejours
此操作需要专用服务器吗?如果是,请给我建议。
顺便拆分XML文件可以帮忙吗?
答案 0 :(得分:1)
XMLParser是一个拉解析器,因此在解析它时不会将整个文件加载到内存中,因此拆分文件除了增加代码的复杂性之外没有任何其他作用。但是,如果您持有脚本中解析的所有详细信息,则会占用大量内存。
但是,您应该在共享主机上运行脚本时收到一些错误或消息,以确定问题所在。他们使用--enable-libxml构建的PHP版本,是否会出现内存分配错误?
答案 1 :(得分:0)
您可以使用SAX(Simple API for XML)解析器,这也是读取大型XML文件的最佳解决方案。 因为这不会将整个文件转储到内存中。这样可以防止内存耗尽问题。是的,阅读如此庞大的文件需要时间。 您可能需要使用phpinfo()检查您的php是否安装了libxml和libxml2模块;功能
但是如果可以使用XMLReader,那就更好了,因为这样可以更快地节省内存使用量。您可以使用memory_get_peak_usage()检查峰值内存使用情况; 并且在该特定行上完成操作后,逐行读取文件并从数组中取消设置行。
答案 2 :(得分:0)
猜测这是与内存相关的问题(设置内存和时间执行限制)。
为了它的价值。我已经使用vtd-xml(java实现)来成功解析超过500MB的文件(内存占用少,速度快 - 可能是最快的执行时间)。