【问题标题】:Does PHP SoapServer class allow to stream large amount of data?PHP SoapServer 类是否允许流式传输大量数据?
【发布时间】:2010-06-23 16:16:41
【问题描述】:

是否可以使用 PHP SoapServer 类在计算过程中将数据流回客户端?

我知道使用 ASP.NET 可以做到这一点

http://msdn.microsoft.com/en-us/library/aa528818.aspx

如果没有,是否可以实施?据我了解 php soap 设施,它们只允许我的函数返回一大块数据,一旦完成,库会将其转换为一个大的肥皂消息......:-/

提前感谢:)

【问题讨论】:

    标签: php soap stream


    【解决方案1】:

    简短的回答是,这对于 SoapServer 类是不可能的。

    当前实现在检查参数的有效性时构建生成的 XML 文档(以确保您没有发送疯狂的无效 SOAP 参数)。

    虽然可以实现您在扩展程序中提出的要求,但我将做出重大改变,因为它必须在参数上循环两次,一次检查有效性(这样他们就可以抛出 Soap Fault ),然后第二次序列化到客户端。

    可能在您的 PHP 脚本中的用户空间中实现此功能,但这需要您手动序列化所有响应数据(因为内置类不会向您公开此功能)。如果您控制请求的双方(客户端和服务器),这不是一个糟糕的选择,并且不需要利用服务器库提供的​​任何“高级”soap 功能。

    为此,您只需发送一个标准的soap XML 标头,然后在您将其直接写入客户端时循环遍历您的数据并将其转换为XML。

    【讨论】:

    • soap 扩展可以采用流而不是字符串,然后从流中读取,编码并发送到客户端,直到流结束。我不知道这有多难(我不熟悉代码库),但我不明白你的双循环参数。
    • 问题是库无法及时检测到编码错误以做任何事情(即将响应转换为 SOAP 故障),因为它已经发送了输出和标头。 soap 错误应该发送一个 500 状态代码,如果它在验证结果中的所有参数之前开始发送输出,它就无法做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2013-01-05
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多