In PHP come si può cancellare una cache WSDL?

In tramite php_info() cui viene trattenuta la cache WSDL ( /tmp ), ma non necessariamente so se è ansible cancellare tutti i file che iniziano con WSDL.

Sì, dovrei essere in grado di eliminare tutto da /tmp , ma non so cos'altro potrebbe avere effetto se elimino tutti i file WSDL.

È ansible eliminare in modo sicuro i file della cache WSDL. Se si desidera impedire la memorizzazione nella cache futura, utilizzare:

 ini_set("soap.wsdl_cache_enabled", 0); 

o dynamicmente:

 $client = new SoapClient('http://somewhere.com/?wsdl', arrays('cache_wsdl' => WSDL_CACHE_NONE) ); 

rimuovere tutti i file wsdl * nella cartella / tmp sul server.

I file WSDL sono memorizzati nella cache nella posizione predefinita per tutti i file cache definiti in php.ini. Stessa posizione dei file di session.

Consiglio di utilizzare un cache-buster nell'URL wsdl.

Nelle nostre app utilizziamo un ID di revisione SVN nell'url wsdl, in modo che il client sappia immediatamente delle strutture che cambiano. Funziona sulla nostra app perché, each volta che cambiamo il lato server, dobbiamo anche adeguare il client di conseguenza.

 $client = new SoapClient('http://somewhere.com/?wsdl&rev=$Revision$'); 

Ciò richiede che svn sia configurato correttamente. Non su tutti i repository, questo è abilitato per impostazione predefinita.

Nel caso in cui non sei responsabile per entrambi i componenti (server, client) o non utilizzi SVN potresti trovare un altro indicatore che può essere utilizzato come cache-buster nel tuo URL wsdl.

se hai già distribuito il codice o non puoi modificare alcuna configuration, puoi rimuovere tutti i file temporanei da wsdl:

 rm /tmp/wsdl-* 

Solo per la ragione della documentazione:

Ho ora (2014) osservato che da tutti questi approcci validi e corretti solo uno ha avuto successo. Ho aggiunto una function al WSDL sul server e il client non stava riconoscendo la nuova function.

  • L'aggiunta di WSDL_CACHE_NONE ai parametri non ha aiutato.
  • L'aggiunta del cache-buster non ha aiutato.
  • L'impostazione di soap.wsdl_cache_enabled su PHP ini è stata di aiuto.

Ora non sono sicuro se sia la combinazione di tutti e tre, o se alcune funzionalità sono implementate in modo terribile in modo da poter rimanere inutilizzabili casualmente, o se c'è una gerarchia di caratteristiche non capita.

Quindi, alla fine, aspettati di whererli controllare tutti e tre per risolvere problemi come questi.