W php_info()
miejscu, w którym przechowywana jest pamięć podręczna WSDL ( /tmp
), ale niekoniecznie wiem, czy można bezpiecznie usunąć wszystkie pliki zaczynające się od WSDL.
Tak, powinienem móc po prostu usunąć wszystko z /tmp
, ale nie wiem, co jeszcze mogłoby to spowodować, jeśli usunę wszystkie pliki WSDL.
ini_set('soap.wsdl_cache_ttl', 1);
i pozostawiłem go na godzinę - znaleziono tutaj: stackoverflow.com/questions/323561/ ...Usuń wszystkie
wsdl*
pliki w/tmp
folderze na serwerze.Pliki WSDL są buforowane w domyślnej lokalizacji dla wszystkich plików pamięci podręcznej zdefiniowanych w php.ini. Ta sama lokalizacja co pliki sesji.
źródło
jeśli już wdrożyłeś kod lub nie możesz zmienić żadnej konfiguracji, możesz usunąć wszystkie pliki tymczasowe z wsdl:
źródło
Zalecam użycie pomijania pamięci podręcznej w adresie URL wsdl.
W naszych aplikacjach używamy identyfikatora wersji SVN w adresie URL WSDL, dzięki czemu klient natychmiast wie o zmianie struktury. Działa to w naszej aplikacji, ponieważ za każdym razem, gdy zmieniamy stronę serwera, musimy również odpowiednio dostosować klienta.
$client = new SoapClient('http://somewhere.com/?wsdl&rev=$Revision$');
Wymaga to poprawnej konfiguracji svn. Nie we wszystkich repozytoriach jest to domyślnie włączone.
W przypadku, gdy nie jesteś odpowiedzialny za oba komponenty (serwer, klient) lub nie używasz SVN, możesz znaleźć inny wskaźnik, który może być użyty jako pomijanie pamięci podręcznej w adresie URL wsdl.
źródło
Tylko ze względu na dokumentację:
Zauważyłem teraz (2014), że ze wszystkich tych cennych i poprawnych podejść tylko jedno odniosło sukces. Dodałem funkcję do WSDL na serwerze, a klient nie rozpoznał nowej funkcji.
WSDL_CACHE_NONE
do parametrów nie pomogło.soap.wsdl_cache_enabled
Pomogło ustawienie na PHP ini.Nie jestem teraz pewien, czy jest to połączenie wszystkich trzech, czy też niektóre funkcje są strasznie zaimplementowane, więc mogą pozostawać bezużyteczne losowo, lub jeśli istnieje niezrozumiała hierarchia cech.
Na koniec spodziewaj się, że musisz sprawdzić wszystkie trzy, aby rozwiązać takie problemy.
źródło
Edytuj
php.ini
plik, wyszukajsoap.wsdl_cache_enabled
i ustaw wartość0
[soap] ; Enables or disables WSDL caching feature. ; http://php.net/soap.wsdl-cache-enabled soap.wsdl_cache_enabled=0
źródło