2012-12-09 14 views
5

Udało mi się utworzyć obiekt mydła klienta i serwera ... ale mając rzeczywiste problemy z tym, co uważam za buforowanie po stronie serwera. Ja wyłączając wszelkie buforowanie po obu skryptów klienta i serwera z:Problemy z buforowaniem pamięci podręcznej serwera PHP

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

Ale wydaje mi się, aby uzyskać dokładnie taką samą odpowiedź od serwera bez względu na to, co robię. Zmieniłem nazwy obiektów, zmieniłem nazwę WSDL, a nawet dodano sygnaturę czasową do nazw obiektów, aby upewnić się, że nigdy nie jest takie samo dla każdego połączenia. Potem nagle, po około 10 lub 20 minutach, aktualizacja się zmieni i otrzymam inną odpowiedź. Sprawdziłem phpinfo() i powiedziałem, że ctt ttl jest całodzienny (globalnie), więc myślę, że jest zdecydowanie krótszy.

Jakieś pomysły dotyczące zabicia wszelkiego rodzaju buforowania?

Odpowiedz

0

Można spróbować przechodząc opcje do obiektów SOAP:

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

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

Jeśli to nie pomoże, spróbuj usunąć plik WSDL cache. W systemie Linux zwykle jest to folder/tmp, a jego nazwa zaczyna się od wsdl-. Jeśli wyczyszczenie tego pliku nie pomoże, może zostanie użyta inna pamięć podręczna? Czy to tylko SoapServer, czy też są jakieś dodatkowe biblioteki?

+0

Dzięki $ server = new SoapServer ("some.wsdl", array ('cache_wsdl' => WSDL_CACHE_NONE)); pracował dla mnie –

0

miałem ten sam problem, i próbuje ustawić:

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

nic nie zrobił.

Ostatecznie zlokalizowałem folder/tmp na serwerze służącym do buforowania pliku wsdl i po prostu go usunięto. Naprawiony!

Folder/tmp nie znajdował się w katalogu mojej domeny wirtualnej/tmp, ale w katalogu głównym serwera.

Powiązane problemy