我是Web服務的新手。我遇到了莫名其妙的SoapClient構造函數執行時間。通常這個通話大約需要10秒。有時只需不到一秒鐘,但這種情況不太頻繁。PHP SoapClient構造函數很慢
PHP SoapClient Constructor extremely slow
PHP: SoapClient constructor is very slow (takes 3 minutes)
Connecting to WCF Web Service is inexplicably slow
我的情況是類似於上述線程,但他們提供的解決方案並沒有解決我的問題。
// 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?推薦的方法是什麼?
任何幫助或推動正確的方向將是非常有責任感。謝謝。
是WSDL文件的本地或遠程? – datasage
@datasage我嘗試了兩個。本地第一,然後遠程。使用遠程更快的執行時間。 – cre8value
嘗試使用soapui創建測試客戶端 - http://www.soapui.org/是否也很慢? – herrjeh42