3

我正在研究一个严重依赖 SOAP 调用的项目。问题是加载时间非常长。

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

现在我做了一些计时,代码的第一部分(启动一个对象 $client)大约需要 2 秒,非常可以接受。但是当调用 getDestination 时,它会增加大约 10 秒的加载时间。这适用于我调用的每个 get 或 set 方法。

此代码在 php 5 上运行。方法是用 .net 4.x 编写的

有谁知道这是为什么以及如何解决?

编辑:ping 统计 10 个数据包传输,10 个数据包接收,0.0% 数据包丢失往返 min/avg/max/stddev = 1.086/2.320/3.624/1.157 ms

4

3 回答 3

4

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

为了加速方法调用本身,我需要更多信息。您是否能够使用wireshark来检查您的应用程序和soap 服务器之间的网络通信?

于 2013-04-16T08:24:32.737 回答
3

我在连接到与我的代码相同的机器上的 SOAP 服务时遇到了类似的问题。它是通过使用http://127.0.0.1/而不是http://localhost/作为 url 来解决的。

于 2015-12-15T19:47:20.377 回答