2008-11-27 6 views
15

Ich weiß, wie man WSDL-cache in PHP deaktivieren, aber was ist zu erzwingen, eine erneute Caching der WSDL?Force-Cache von WSDL in PHP erzwingen

Dies ist, was ich versucht habe: Ich habe meinen Code mit Caching auf deaktiviert, und die neuen Methoden angezeigt, wie erwartet. Dann aktivierte ich Caching, aber aus irgendeinem Grund tauchte meine alte, nicht arbeitende Wsdl wieder auf. Also: Wie kann ich meine neue WSDL zwingen, meinen alten Cache zu überschreiben?

Antwort

33

Ich denke, wenn Sie Caching deaktivieren, wird es auch aufhören, in den Cache zu schreiben. Wenn Sie den Cache erneut aktivieren, ist die alte zwischengespeicherte Kopie immer noch vorhanden und gültig. Sie könnten versuchen, (mit Caching aktiviert)

ini_set('soap.wsdl_cache_ttl', 1); 

ich in einem Time-to-Live-setzte von einer Sekunde, weil ich denke, wenn man Null in ihm gesetzt wird, den Cache vollständig zu deaktivieren, aber nicht um den Eintrag zu entfernen. Sie werden wahrscheinlich nur diese Zeile einfügen wollen, wenn Sie die zwischengespeicherte Kopie löschen wollen.

+2

Das ist die EINZIGE Antwort, die ich gesehen habe, die tatsächlich funktioniert. DANKE. –

+0

Du hast meinen Tag gemacht! –

1

würde ich

$limit = ini_get('soap.wsdl_cache_limit'); 
ini_set('soap.wsdl_cache_limit', 0); 
ini_set('soap.wsdl_cache_limit', $limit); 

versuchen Oder stellen möglicherweise soap.wsdl_cache_ttl-0 und aus dem Cache die alte WSDL

3

löschen zurück.

+0

Keine gute Lösung. Ich habe keinen Zugriff auf den Server .... und selbst wenn ich das tue ... laufen viele Soap-Dienste. Wäre unmöglich herauszufinden, welche Cachedatei zu der Ws passt, an der ich gerade arbeite. –

12

In meiner php.ini gibt es einen Eintrag, der wie folgt aussieht:

soap.wsdl_cache_dir="/tmp" 

in/tmp, ich habe eine Reihe von Dateien namens wsdl- gefunden [einige Hexadezimalstring]

ich die Spülung kann zwischengespeicherte WSDL-Dateien mit diesem Befehl:

rm /tmp/wsdl-* 
+1

Keine gute Lösung. Ich habe keinen Zugriff auf den Server .... und selbst wenn ich das tue ... laufen viele Soap-Dienste. Es wäre unmöglich herauszufinden, welche Cachedatei der aktuellen Version von mir entspricht –