Jestem nowy w usługach internetowych. Doświadczam niewytłumaczalnych losowych czasów wykonania konstruktora SoapClient. Zwykle połączenie trwa około 10 sekund. Czasami zajmuje to mniej niż sekundę, ale zdarzenie to występuje rzadziej.Konstruktor PHP SoapClient bardzo powolny
PHP SoapClient Constructor extremely slow
PHP: SoapClient constructor is very slow (takes 3 minutes)
Connecting to WCF Web Service is inexplicably slow
Moja sytuacja jest podobna do tych w powyższych wątków ale rozwiązania przewidziane w nich nie rozwiązało mojego problemu.
// 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);
Grałem z różnymi parametrami buforowania wsdl i znalazłem WSDL_CACHE_MEMORY, aby być najszybszym. Podczas korzystania z innych opcji buforowania, wywołanie trwa średnio około 25 sekund.
Nie używam wielu użytkowników.
Zmieniono katalog wsdl_cache na katalog przyjazny dla systemu Windows w pliku php.ini.
Moje pytanie jest dwojaki:
Dlaczego konstruktor SoapClient pozornie losowo, jak długo to trwa do wykonania? Dlaczego zwykle trwa to dłużej, ale czasem zajmuje to tylko ułamek sekundy? Czy mogę wykonać test, aby dowiedzieć się, dlaczego tak się zachowuje?
Czy należy buforować/zapisywać obiekt lub zasób SoapClient, aby po przejściu przez moją stronę od strony do strony nie trzeba było tworzyć nowego modułu SoapClient i ponownie analizować pliku WSDL? Jakie jest zalecane podejście, aby to osiągnąć?
Każda pomoc lub skierowanie we właściwym kierunku byłoby bardzo potrzebne. Dziękuję Ci.
Czy plik WSDL lokalnie lub zdalnie? – datasage
@datasage Próbowałem obu. Najpierw lokalny, potem zdalny. Szybsze czasy wykonania ze zdalnym sterowaniem. – cre8value
spróbuj stworzyć klienta testowego z soapui - http://www.soapui.org/ czy to też jest powolne? – herrjeh42