我正在从事一个严重依赖 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
最佳答案
首先,您应该使用 soap.wsdl_cache_enabled
启用 WSDL 缓存ini 值或使用 SoapClient
的 $options
参数构造函数。这将阻止 PHP 一次又一次地下载 wsdl 并会加速构造函数(2 秒也很长)
为了加速方法调用本身,我需要更多信息。你能用wireshark吗反射(reflection)您的应用和 soap 服务器之间的网络通信?
关于php - SOAP 方法调用极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16032025/