Sono nuovo ai servizi Web. Sto sperimentando tempi di esecuzione del costruttore SoapClient inspiegabilmente casuali. Di solito la chiamata dura circa 10 secondi. A volte ci vuole meno di un secondo, ma questo evento è meno frequente.PHP SoapClient costruttore molto lento
PHP SoapClient Constructor extremely slow
PHP: SoapClient constructor is very slow (takes 3 minutes)
Connecting to WCF Web Service is inexplicably slow
La mia situazione è simile a quelli nei thread di cui sopra, ma le soluzioni fornite in essi non ha risolto il mio problema.
// 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);
Ho giocato con i diversi parametri WSDL di cache ed è risultato WSDL_CACHE_MEMORY essere il più veloce. Quando si utilizzano le altre opzioni di memorizzazione nella cache, la chiamata richiede in media circa 25 secondi.
Non sto utilizzando più utenti.
Ho modificato wsdl_cache_dir in una directory di Windows in php.ini.
La mia domanda è duplice:
Perché è il costruttore SoapClient apparentemente casuale in quanto tempo ci vuole per l'esecuzione? Perché di solito richiede più tempo, ma a volte richiede solo una frazione di secondo? C'è un test che posso eseguire per capire perché si comporta in questo modo?
Devo memorizzare nella cache/salvare l'oggetto o la risorsa SoapClient in modo tale che quando i visitatori della mia pagina si spostano da una pagina all'altra non è necessario creare un nuovo SoapClient e ri-analizzare nuovamente il WSDL? Qual è l'approccio consigliato per farlo?
Qualsiasi aiuto o spunto nella giusta direzione sarebbe molto obbligato. Grazie.
è il file WSDL locale o remoto? – datasage
@datasage Ho provato entrambi. Prima il locale, poi il remoto. Tempi di esecuzione più rapidi con telecomando. – cre8value
prova a creare un client di prova con soapui - http://www.soapui.org/ è lento? – herrjeh42