我是 Web 服务的新手。我正在经历莫名其妙的随机 SoapClient 构造函数执行时间。通常通话大约需要 10 秒。有时它需要不到一秒钟的时间,但这种情况发生的频率较低。
PHP:SoapClient 构造函数非常慢(需要 3 分钟)
我的情况与上述线程中的情况相似,但其中提供的解决方案并没有解决我的问题。
// config params
$params = array(
'trace' => 1,
'soap_version' => SOAP_1_1,
'cache_wsdl' => WSDL_CACHE_MEMORY
);
// this call takes about 10 seconds to remote WSDL
$soap_client = new SoapClient(WSDL_URL,$params);
我玩过不同的 wsdl 缓存参数,发现 WSDL_CACHE_MEMORY 是最快的。使用其他缓存选项时,调用平均需要大约 25 秒。
我没有使用多个用户。
我已将 wsdl_cache_dir 更改为 php.ini 中的 Windows 友好目录。
我的问题有两个:
为什么 SoapClient 构造函数的执行时间看起来是随机的?为什么通常需要更长的时间,但有时只需要一秒钟?有没有我可以执行的测试来了解它为什么会这样?
我是否应该缓存/保存 SoapClient 对象或资源,以便当我的页面访问者从一个页面移动到另一个页面时,我不需要创建新的 SoapClient 并再次重新解析 WSDL?实现这一目标的推荐方法是什么?
任何朝着正确方向的帮助或推动都将非常有义务。谢谢你。