我正在尝试对soap api进行一些测试,但执行速度非常慢。我做了一些研究,发现soapclient构造函数需要永远执行。我还尝试使用一个代理来查看它是否是由它生成的http查询,但是这个查询执行得比较快。在查询之后,它会停留大约30秒。
这里有一张kcachegrind截图供参考:
下面是charles proxy中的wsdl查询:
几个月前,这里也报道了同样的问题:
PHP: SoapClient constructor is very slow (takes 3 minutes)
但他没有得到答复。
如有任何建议,将不胜感激。
编辑:
启动soapclient的代码部分(这是netsuite php工具包的一部分)
$this->client = new SoapClient( $host . "/wsdl/v" . $endpoint . "_0/netsuite.wsdl",
array( "location" => $host . "/services/NetSuitePort_" . $endpoint,
"trace" => 1,
"connection_timeout" => 5,
"typemap" => $typemap,
"user_agent" => "PHP-SOAP/" . phpversion() . " + NetSuite PHP Toolkit " . $version
)
);
最佳答案
你在使用多个用户吗?我在同一行代码上得到了3-20分钟的延迟,结果发现这些代码与多个用户相关,导致获取了wsdl的多个副本。
http://www.ozonesolutions.com/programming/2011/05/nsclient-login-time/