2008-11-27 10 views
15

Sé cómo desactivar WSDL-cache en PHP, pero ¿qué hay de forzar un nuevo almacenamiento en caché del WSDL?Force re-cache de WSDL en php

Esto es lo que probé: Ejecuto mi código con el almacenamiento en caché configurado como deshabilitado, y los nuevos métodos aparecen como espected. Luego activé el almacenamiento en caché, pero por alguna razón apareció mi antigua wsdl que no funcionaba. Entonces, ¿cómo puedo forzar a mi nuevo WSDL a sobrescribir mi viejo caché?

Respuesta

33

Supongo que cuando deshabilita el almacenamiento en caché también dejará de escribir en el caché. Por lo tanto, cuando vuelva a habilitar el caché, la copia guardada en caché seguirá allí y será válida. Usted podría intentar (con habilitada la caché)

ini_set('soap.wsdl_cache_ttl', 1); 

pongo en un tiempo a vivir de un segundo en porque creo que si se pone a cero en ella deshabilitará la caché del todo, pero no eliminar la entrada. Probablemente solo quiera poner esa línea cuando quiera matar la copia en caché.

+2

Esta es la ÚNICA respuesta que he visto que realmente funciona. GRACIAS. –

+0

¡Hiciste mi día! –

1

que iba a tratar

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

O posiblemente puse soap.wsdl_cache_ttl a 0 y volver

3

eliminar el antiguo WSDL de la caché.

+0

No es una buena solución. No tengo acceso en el servidor ... y aunque lo haga ... hay muchos servicios en ejecución. Sería imposible saber qué archivo de caché corresponde al ws estoy trabajando ahora –

12

En mi php.ini hay una entrada que se parece a esto:

soap.wsdl_cache_dir="/tmp" 

en/tmp, me encontré con un montón de archivos con el nombre wsdl- [alguna cadena hexadecimal]

puedo lavar el archivos wsdl en caché con este comando:

rm /tmp/wsdl-* 
+1

No es una buena solución. No tengo acceso en el servidor ... y aunque lo haga ... hay muchos servicios en ejecución. Sería imposible saber qué archivo de caché corresponde al ws estoy trabajando ahora –