16 Stimmen

Erzwingen des erneuten Zwischenspeicherns von WSDL in php

Ich weiß, wie man die WSDL-Cache in PHP, aber wie wäre es, ein erneutes Zwischenspeichern der WSDL zu erzwingen?

Das habe ich versucht: Ich führe meinen Code mit deaktiviertem Caching aus, und die neuen Methoden tauchen wie erwartet auf. Dann aktivierte ich die Zwischenspeicherung, aber aus irgendeinem Grund meine alte nicht funktionierende WSDL wieder angezeigt. Also: wie kann ich meine neue WSDL zwingen, meinen alten Cache zu überschreiben?

38voto

Tom Haigh Punkte 56080

Ich vermute, wenn Sie die Zwischenspeicherung deaktivieren, wird auch nicht mehr in den Cache geschrieben. Wenn Sie also den Cache wieder aktivieren, ist die alte Kopie im Cache noch vorhanden und gültig. Versuchen Sie (bei aktiviertem Caching)

ini_set('soap.wsdl_cache_ttl', 1);

Ich habe eine Time-to-live von einer Sekunde eingegeben, weil ich denke, dass bei einer Eingabe von Null der Cache vollständig deaktiviert, der Eintrag aber nicht entfernt wird. Wahrscheinlich werden Sie diese Zeile nur dann einfügen wollen, wenn Sie die gecachte Kopie löschen wollen.

12voto

G Mawr Punkte 1045

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

soap.wsdl_cache_dir="/tmp"

In /tmp fand ich eine Reihe von Dateien mit dem Namen wsdl-[irgendeine hexadezimale Zeichenfolge]

Ich kann die zwischengespeicherten wsdl-Dateien mit diesem Befehl leeren:

rm /tmp/wsdl-*

3voto

foxy Punkte 2148

Löschen Sie die alte WSDL aus dem Cache.

1voto

Greg Punkte 306033

Ich würde versuchen

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

Oder möglicherweise setzen soap.wsdl_cache_ttl auf 0 und zurück

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X