使用PHP SoapServer类可以将数据按计算流式传输回客户端吗?PHP SoapServer类允许流式传输大量数据吗?
我知道这是可能使用ASP.NET
http://msdn.microsoft.com/en-us/library/aa528818.aspx
如果不是,是有可能实现吗?据我了解的肥皂设施,他们只允许我的函数返回一大块数据,一旦完成图书馆将它转换成一个大的肥皂信息...: -/
在此先感谢: )
使用PHP SoapServer类可以将数据按计算流式传输回客户端吗?PHP SoapServer类允许流式传输大量数据吗?
我知道这是可能使用ASP.NET
http://msdn.microsoft.com/en-us/library/aa528818.aspx
如果不是,是有可能实现吗?据我了解的肥皂设施,他们只允许我的函数返回一大块数据,一旦完成图书馆将它转换成一个大的肥皂信息...: -/
在此先感谢: )
简而言之,这对于SoapServer类来说是不可能的。
当前的实现会在生成XML文档时检查参数的有效性(以确保不会发送疯狂的无效SOAP参数)。
虽然有可能实现你在扩展中要求的东西,但我会是一个重大的改变,因为它必须在参数上循环两次,一次检查有效性(以便他们可以扔肥皂故障),然后再次序列化到客户端。
这也是可能在您的PHP脚本中的userland中实现此操作,但这需要您手动序列化所有响应数据(因为内置类不会向您公开此功能)。如果您控制请求的两端(客户端和服务器),并且不需要利用服务器库提供的任何“高级”soap功能,则这不是一个糟糕的选项。
为此,您只需发送一个标准的SOAP XML标头,然后在将数据直接写入客户端时将其转换为XML。
soap扩展可以接收流而不是字符串,然后从流中读取,编码并发送到客户端,直到流结束。我不知道它会有多难(我不熟悉代码库),但我没有得到你的双循环参数。 – Artefacto 2010-06-23 19:07:33
问题在于库无法及时检测到编码错误(即将响应转换为SOAP错误),因为它已经发送了输出和标题。一个soap故障应该发送一个500状态代码,如果它在结果中验证了所有参数之前开始发送输出,它就无法做到这一点。 – 2010-06-23 19:41:01