SOAP方法调用速度极慢

I am working on a project which relies heavily on SOAP calls. The problem is that load times a re extremely long.

$client = new SoapClient("https://link.to.wsdl");
$client = $client->GetDestination(array(
"parameter1" => $param1,
"parameter2" => $param2
));

Now I did some timing and the first part of the code(initiating an object $client) takes about 2 seconds, very acceptable. But when calling getDestination it adds about 10 seconds loading time. This is with every get or set method that I call.

This code is running on php 5. The methods are written in .net 4.x

Does anyone know why this is and how it can be solved?

EDIT: ping statistics 10 packets transmitted, 10 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 1.086/2.320/3.624/1.157 ms

doupang1917
doupang1917 如果它在某些时候帮助某人,我的问题结果是DNS解析时间。无论出于何种原因,每个呼叫都在查找域(位于同一服务器上)。我将它添加到hosts文件中,每次调用从5秒变为0秒:)
大约 5 年之前 回复
douwen5584
douwen5584 发送10个数据包,接收10个数据包,0.0%丢包往返min/avg/max/stddev=1.086/2.320/3.624/1.157ms
7 年多之前 回复
duanli0453
duanli0453 如果你ping目的地,需要多长时间才能回复?
7 年多之前 回复

2个回答



首先,您应该使用 soap.wsdl_cache_enabled </ code> ini值或使用 $ options </ code> SoapClient </ code> 构造函数的参数。 这将阻止PHP一次又一次地下载wsdl并加速构造函数(2秒也很长)</ p>

为了加快方法调用本身,我需要更多信息。 您是否可以使用 wireshark 来反省您的应用与soap服务器之间的网络通信?</ p> \ n </ div>

展开原文

原文

First, you should enable WSDL caching using the soap.wsdl_cache_enabled ini value or using the $options param of the SoapClient constructor. This would prevent PHP from downloading the wsdl again and again and will speedup the constructor (2 seconds it also very long)

To speedup the method calls itself, I need more information. Are you able to use wireshark to introspect the network communication between your app and the soap server?

douchong8393
douchong8393 看起来它是服务器。 你有我的网址吗? 如果您主要使用读取操作,则可以在您和服务器之间使用HTTP代理
7 年多之前 回复
douxingsuo8809
douxingsuo8809 好吧,似乎wsdl缓存不起作用。 但是现在这个问题已经解决了,它就像2秒的时间一样被切断了。 现在加载页面大约需要10秒钟。 我使用Wireshark来检查xml,它确实需要很长时间才能响应。 它可能是服务器,我不确定。
7 年多之前 回复
douluoyou9876
douluoyou9876 你确定wsdl缓存有效吗? 看看缓存目录。 你看到wsdls了吗? 这些wsdl是否导入必须下载的外部参考? Wireshark:检查响应传递所需的时间。 如果这需要10秒,那么服务器就会出现性能问题
7 年多之前 回复
doudi8298
doudi8298 wsdl缓存已启用。 我或许可以使用wireshark,但我不确定我应该寻找什么以及我应该从哪里运行它?
7 年多之前 回复



我在与我的代码在同一台机器上连接到SOAP服务时遇到了类似的问题。 它是通过使用 http://127.0.0.1/ </ code>而不是 http:// localhost / </ code>作为网址来解决的。</ p>
</ div>

展开原文

原文

I had a similar issue connecting to a SOAP service on the same machine as my code. It was resolved by using http://127.0.0.1/ instead of http://localhost/ as the url.

dousuohe5882
dousuohe5882 这通常是因为本地计算机没有localhost的DNS条目
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐