2012-12-09 118 views
5

我已經成功創建了一個客戶端和服務器soap對象......但在我認爲是在服務器端緩存時遇到了實際問題。我禁用所有緩存在客戶端和服務器的腳本有:PHP Soap服務器緩存響應的問題

ini_set("soap.wsdl_cache", "0"); 
ini_set("soap.wsdl_cache_ttl", "0"); 
ini_set("soap.wsdl_cache_enabled", "0"); 

但我似乎得到完全從服務器相同的反應,無論我做什麼。我更改了對象名稱,更改了WSDL名稱,甚至附加了一個時間戳到對象名稱,以確保每次調用都不會相同。然後突然,大約10或20分鐘左右後,它會更新,我會得到不同的迴應。我已經檢查過phpinfo(),它說緩存ttl是一整天(全球),所以我認爲它比這個短得多。

任何關於殺死任何類型的緩存的想法?

回答

0

您可以嘗試通過選項來SOAP對象:

$client = new SoapClient("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE)); 

$server = new SoapServer("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE)); 

如果這沒有幫助,嘗試清除WSDL緩存文件。在Linux上,它通常位於/ tmp文件夾中,名稱以wsdl-開頭。如果清除這個文件沒有幫助,也許使用其他緩存?它只是SoapServer還是使用了一些額外的庫?

+0

Thanks $ server = new SoapServer(「some.wsdl」,array('cache_wsdl'=> WSDL_CACHE_NONE));爲我工作 –

0

我有同樣的問題,並試圖設置:

new SoapClient("some.wsdl", array('cache_wsdl' => WSDL_CACHE_NONE)) 

什麼也沒做。

最後,我找到了用於緩存wsdl文件的服務器的/ tmp文件夾,並將其刪除。固定!

/tmp文件夾不在我的虛擬域/ tmp文件夾中,而是在服務器目錄的根目錄中。