【问题标题】:XML error parsing SOAP payload on line 1: No memory第 1 行解析 SOAP 有效负载的 XML 错误:没有内存
【发布时间】:2015-03-25 05:09:44
【问题描述】:

我知道以前有人问过这个问题,但我似乎找不到我的确切问题或适合我的解决方案。

我有一个 SOAP 服务器,它可以接受从一个客户端推送到另一个客户端的文档。这适用于较小的文档,但是当您达到 10MB 左右的范围时,会收到以下错误:

Fault: Array
(
    [faultcode] => SOAP-ENV:Client
    [faultactor] => 
    [faultstring] => error in msg parsing:
XML error parsing SOAP payload on line 1: No memory
    [detail] => 
)

除了文档的 base64 之外,成功的 SOAP 调用和导致上述错误的 XML 完全相同。

我的服务器大小限制为 512MB,时间限制为 1200 秒。

我可以完全访问服务器和代码。任何建议表示赞赏。

【问题讨论】:

    标签: php xml soap nusoap


    【解决方案1】:

    你从 NuSoap 库中得到这样的错误消息:

    在第 1 行解析 SOAP 有效负载时出现 XML 错误:没有内存

    实际上来自 PHP 中的XML Parser Functions(因为 NuSOAP 使用这个 PHP 库进行 XML 解析)。

    这意味着如果你 increase the PHP memory limit 你应该有很好的机会在这里改进。

    【讨论】:

    • 由于我的内存限制是 256MB,这对于 10MB 的文件来说应该是个问题吗?如,这仍然是一个问题吗?我想知道此时服务器本身的 RAM 量是否存在问题。我正在使用只有 512MB 左右 RAM 的亚马逊服务器。我使用同一台服务器将请求发送到运行 SOAP 服务器的 SOAP 服务器。这可能是服务器本身没有足够 RAM 的实际问题吗?我打算设置另一个具有更多 RAM 的 Amazon 服务器来测试这个理论......
    • 我只能对您说的是,对于您要通过 that XML 解析器解析的文档,解析器会给您一个无内存错误。您将不得不尝试使用内存限制。将其设置为可能的最大值,然后重试。只是为了测试。这并不意味着仅 PHP 中的内存限制就可以解决这个问题。这也可能是服务器整体内存的问题,因为扩展可能甚至没有编程,它尊重 PHP 内存限制设置。
    • 您也可以考虑提供有问题的 XML 文档。
    • 谢谢,我会测试一下,如果它仍然不起作用,我会提供 XML。
    • 我最终将它设置在一个服务器上,该服务器具有来自 Amazon 的 2GB 内存,而原始演示服务器具有 512MB 内存。我将内存限制设置为 1024MB,但仍然得到完全相同的错误。我将发布 XML。
    【解决方案2】:

    对于后来到达这里的任何人,问题确实来自xml解析器库,但增加内存无济于事。

    xml_parse No memory error PHP 的 stackoverflow 帖子详细说明了如何解决它,我必须编辑 nusoap.php 并根据链接的帖子更改具有 if (!xml_parse($this->parser,$xml,true)) { ... 的行以使其正常工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-10
      • 2013-06-03
      • 1970-01-01
      • 2023-03-17
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多