【问题标题】:json encode breaking for large stringsjson编码中断大字符串
【发布时间】:2014-09-29 09:06:50
【问题描述】:

我正在尝试将json encode 格式良好的 XML 字符串转换为 SimpleXMLElement 对象。但发生的情况是,breaksexit

我尝试使用较小的 xml 文件并且工作正常,但问题在于较大的 xml 文件

代码如下:

<?php
$directory = "lookup.xml";
$xmlContent = file_get_contents($directory); // get contents of lookup
print_r(simplexml_load_string($xmlContent));
$arrayXml = json_decode(json_encode(simplexml_load_string($xmlContent)),TRUE);
print_r($arrayXml);

lookup.xml 文件:

1. lookup.xml - 2 MB (works fine)
2. lookup.xml - 13 MB (Not working)

是因为文件大还是断线??

【问题讨论】:

  • 这就是为什么这种方式一点都不完美的原因。为什么不正常遍历呢?
  • 您收到的错误信息是什么?
  • 致命错误:允许的内存大小为 1048576 字节已用尽(尝试分配 12286130 字节)。现在我通过ini_set('memory_limit', '100M'); 解决了这个问题

标签: php xml json


【解决方案1】:

究竟什么是错误消息,将 13Mb 加载到 XML 中而不是加载到 JSON 中会占用大量内存,服务器上的内存限制是多少。使用您的代码,我尝试了 7.5 MB 的 XML 站点地图和 脚本末尾的 memory_get_peak_usage() 显示 13 的使用量为 119MB,这几乎是 XML 本身的两倍。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2012-07-15
    • 2013-06-07
    • 1970-01-01
    • 2013-06-15
    相关资源
    最近更新 更多