我正在尝试对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
)
);
答案 0 :(得分:4)
您使用的是多个用户吗?我在相同的代码行上得到3-20分钟的延迟,结果证明这与多个用户有关,导致获取wsdl的多个副本。 http://www.ozonesolutions.com/programming/2011/05/nsclient-login-time/