我正在开发一个严重依赖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
答案 0 :(得分:3)
首先,您应该使用soap.wsdl_cache_enabled
ini值或使用SoapClient
构造函数的$options
参数启用WSDL缓存。这会阻止PHP一次又一次地下载wsdl并加速构造函数(2秒也很长)
为了加快方法调用本身,我需要更多信息。您是否可以使用wireshark来检查应用与soap服务器之间的网络通信?
答案 1 :(得分:3)
我在与我的代码在同一台机器上连接到SOAP服务时遇到了类似的问题。使用http://127.0.0.1/
代替http://localhost/
作为网址解决了问题。
答案 2 :(得分:0)
对我来说,我必须在我网站的 php 设置中设置“exec php as FPM by apache”