Frage In PHP, wie können Sie einen WSDL-Cache löschen?


Hindurch php_info() wo der WSDL-Cache gehalten wird (/tmp), aber ich weiß nicht unbedingt, ob es sicher ist, alle mit WSDL beginnenden Dateien zu löschen.

Ja ich sollte in der Lage sein, einfach alles zu löschen /tmp, aber ich weiß nicht, was das alles sonst bewirken könnte, wenn ich alle WSDL-Dateien lösche.


75
2017-11-19 21:46


Ursprung


Antworten:


Sie können die WSDL-Cache-Dateien sicher löschen. Wenn Sie zukünftiges Caching verhindern möchten, verwenden Sie:

ini_set("soap.wsdl_cache_enabled", 0);

oder dynamisch:

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

170
2017-11-19 21:54



Entferne alle WSDL * -Dateien in deinem / tmp-Ordner auf dem Server.

WSDL-Dateien werden an Ihrem Standardspeicherort für alle in php.ini definierten Cache-Dateien zwischengespeichert. Derselbe Speicherort wie Ihre Sitzungsdateien.


19
2018-02-01 01:59



Ich empfehle einen Cache-Buster in der WSDL-URL zu verwenden.

In unseren Apps verwenden wir eine SVN-Revision-ID in der wsdl-URL, so dass der Client sofort die sich ändernden Strukturen kennt. Dies funktioniert auf unserer App, denn jedes Mal, wenn wir die Server-Seite ändern, müssen wir auch den Client entsprechend anpassen.

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

Dies erfordert, dass svn korrekt konfiguriert wird. Nicht in allen Repositories ist dies standardmäßig aktiviert.

Falls Sie nicht für beide Komponenten verantwortlich sind (Server, Client) oder SVN nicht verwenden, finden Sie möglicherweise einen anderen Indikator, der in Ihrer wsdl-URL als Cache-Buster verwendet werden kann.


12
2017-08-01 10:34



Wenn Sie den Code bereits implementiert haben oder keine Konfiguration ändern können, können Sie alle temporären Dateien von wsdl entfernen:

rm /tmp/wsdl-*

7
2018-04-16 21:30



Nur aus dem Grund der Dokumentation:

Ich habe jetzt (2014) beobachtet, dass von all diesen wertvollen und korrekten Ansätzen nur einer erfolgreich war. Ich habe der WSDL auf dem Server eine Funktion hinzugefügt, und der Client erkannte die neue Funktion nicht.

  • Hinzufügen WSDL_CACHE_NONE zu den Parametern hat nicht geholfen.
  • Das Hinzufügen des Cache-Busters hat nicht geholfen.
  • Rahmen soap.wsdl_cache_enabled zum PHP ini geholfen.

Ich bin mir jetzt nicht sicher, ob es die Kombination aus allen dreien ist, oder ob einige Features schrecklich implementiert sind, so dass sie nach dem Zufallsprinzip nutzlos bleiben oder wenn eine Hierarchie von Features nicht verstanden wird.

Erwarten Sie also, dass Sie alle drei überprüfen müssen, um solche Probleme zu lösen.


3
2017-07-26 15:09