Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP SoapClient构造函数非常慢_Php_Soap_Wsdl - Fatal编程技术网

PHP SoapClient构造函数非常慢

PHP SoapClient构造函数非常慢,php,soap,wsdl,Php,Soap,Wsdl,我不熟悉Web服务。我正在经历令人费解的随机SoapClient构造函数执行时间。通常通话时间约为10秒。有时这需要不到一秒钟的时间,但这种情况发生的频率较低 我的情况与上述线程中的情况类似,但其中提供的解决方案并没有解决我的问题 // config params $params = array( 'trace' => 1, 'soap_version' => SOAP_1_1, 'cache_wsdl' => WSDL_CACH

我不熟悉Web服务。我正在经历令人费解的随机SoapClient构造函数执行时间。通常通话时间约为10秒。有时这需要不到一秒钟的时间,但这种情况发生的频率较低

我的情况与上述线程中的情况类似,但其中提供的解决方案并没有解决我的问题

// 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_缓存_内存最快。使用其他缓存选项时,调用平均需要25秒

我没有使用多个用户

我已经将wsdl\u cache\u dir更改为php.ini中的Windows友好目录

我的问题有两个方面:

  • 为什么SoapClient构造函数的执行时间看起来是随机的?为什么它通常需要更长的时间,但有时只需要一秒钟?我可以做一个测试来了解它为什么会这样吗

  • 我是否应该缓存/保存SoapClient对象或资源,以便当我的页面访问者从一个页面移动到另一个页面时,我不需要创建新的SoapClient并重新解析WSDL?实现这一目标的推荐方法是什么

  • 在正确的方向上给予任何帮助或轻推都将不胜感激。谢谢。

    检查TTL TTL定义WSDL在缓存中的生存时间

     soap.wsdl_cache_ttl integer
    
    设置将使用缓存文件而不是原始文件的秒数(生存时间)

    在本地存储WSDL 您还可以将WSDL下载到本地文件系统,并将其用作
    SoapClient

    $client = new SoapClient("file://path/wsdl.file", array(
        'location' => "http://domain/ws-endpoint",
    ));
    

    wsdl文件是本地的还是远程的?@datasage我两个都试过了。先本地,然后远程。远程执行速度更快。尝试使用soapui创建一个测试客户端-它也慢吗?@jamie0726不慢。第一次尝试大约花了2秒钟,之后每次刷新几乎都是瞬间完成的。我猜你是说这是我的远程资源,不是我的目的?为什么我的远程资源缓存不喜欢soapui?@ImpudentStrumpet我对下面的对话有点困惑。听起来,速度问题与加载远程wsdl文件有关。这可能会受到各种网络因素的影响。