代码之家  ›  专栏  ›  技术社区  ›  Andrew Hedges

如何确定SOAP消息的最大大小?

  •  3
  • Andrew Hedges  · 技术社区  · 16 年前

    5 回复  |  直到 16 年前
        1
  •  6
  •   Sean Vieira    14 年前

    关于FUD的“1000字节限制”。。。我查阅了nusoap_客户机源代码,发现该限制仅对 调试输出

    这意味着所有数据都将被处理并传递到webservice(无论其大小),但调试日志中只显示前1000个字节(或者更准确地说:字符)。

    代码如下:

    $this->debug('SOAP message length=' . strlen($soapmsg) . ' contents (max 1000 bytes)=' . substr($soapmsg, 0, 1000));
    
    // send
    $return = $this->send($this->getHTTPBody($soapmsg),$soapAction,$this->timeout,$this->response_timeout);
    

    getHTTPBody() $soapmsg substr() 打电话来满足您的需求,或者干脆用 $soapmsg (因此,调试输出中也会显示所有内容)。

    这与实际发送的数据的实际限制完全无关。当然,实际上可能还有其他因素限制了您可以发送的数据的大小(例如,为PHP脚本设置的RAM限制、HTTP实现的限制或可用虚拟内存不足),但请想当然地认为,使用NuSOAP发送的数据不存在“1000字节限制”。

        2
  •  2
  •   rjray    16 年前

    我只对PHP略知一二,从来没有使用过NuSOAP包。但是,SOAP消息的大小应该只受传输介质的限制。在HTTP的情况下,它应该几乎是无限的(form POST请求中16384字节的限制不是由于SOAP,而是由于浏览器的限制(实际上可能不再存在,但我不确定))。

    我建议为NuSOAP的作者/维护者找到一个联系地址,并直接询问他们。除非WSDL中有什么东西(我不记得WSDL规范中有什么东西会限制整个消息体的大小…单个参数(通过XML模式方面),而不是整个消息体),否则限制似乎就在工具包中。

        3
  •  2
  •   Dan Soap    16 年前

    在生产环境中,我们使用PHP5.2.5内置的Soap函数作为PHP4上的服务器和NuSoap,并成功地传输了大于1MB的消息。

    我认为这两种产品都没有限制,但您应该检查php.ini中的设置以了解更多信息

    max_input_time        (defaults to 60)
    

    这是允许每个脚本解析输入的时间。如果解析完成之前的时间到了,脚本甚至不会运行。

        4
  •  1
  •   staticsan    16 年前

    您还没有说您是否正在发送或接收SOAP消息。如果您正在发送,我将检查NuSOAP是否通过POST而不是GET发送(您可能需要深入研究代码才能看到;我发现文档很少)。如果您正在接收,请检查PHP.INI设置中的内存和数据大小。事实上,检查一下你的内存限制,不管怎样,NuSOAP是一个相当大的内存消耗者,IIRC。

        5
  •  0
  •   nightcoder    12 年前

    推荐文章