pagina - deshabilitar cache php
En PHP, ¿cómo se puede borrar un caché WSDL? (5)
Puede eliminar de forma segura los archivos de caché WSDL. Si desea evitar el futuro almacenamiento en caché, use:
ini_set("soap.wsdl_cache_enabled", 0);
o dinámicamente:
$client = new SoapClient(''http://somewhere.com/?wsdl'', array(''cache_wsdl'' => WSDL_CACHE_NONE) );
A través de php_info()
donde se php_info()
el caché WSDL ( /tmp
), pero no necesariamente sé si es seguro eliminar todos los archivos comenzando con WSDL.
Sí, debería poder borrar todo de /tmp
, pero no sé qué más podría ocurrir si elimino todos los archivos WSDL.
Recomiendo usar un cache-buster en la url wsdl.
En nuestras aplicaciones, utilizamos un id. De revisión SVN en url wsdl para que el cliente sepa inmediatamente de las estructuras cambiantes. Esto funciona en nuestra aplicación porque, cada vez que cambiamos el lado del servidor, también tenemos que ajustar el cliente en consecuencia.
$client = new SoapClient(''http://somewhere.com/?wsdl&rev=$Revision$'');
Esto requiere que svn se configure correctamente. No en todos los repositorios esto está habilitado por defecto.
En caso de que no sea responsable de ambos componentes (servidor, cliente) o no use SVN, puede encontrar otro indicador que pueda utilizarse como cache-buster en su url wsdl.
Solo por el motivo de la documentación:
Ahora (2014) he observado que de todos estos enfoques valiosos y correctos solo uno fue exitoso. Agregué una función al WSDL en el servidor, y el cliente no reconocía la nueva función.
- Agregar
WSDL_CACHE_NONE
a los parámetros no ayudó. - Agregar el cache-buster no ayudó.
- Establecer
soap.wsdl_cache_enabled
para PHP ini ayudó.
Ahora no estoy seguro de si se trata de la combinación de los tres, o si algunas características están terriblemente implementadas por lo que pueden permanecer inútiles al azar, o si hay alguna jerarquía de características que no se entienden.
Entonces, finalmente, espere que tenga que verificar los tres para resolver problemas como estos.
elimine todos los archivos wsdl * en su carpeta / tmp en el servidor.
Los archivos WSDL se almacenan en caché en su ubicación predeterminada para todos los archivos de caché definidos en php.ini. La misma ubicación que sus archivos de sesión.
si ya implementó el código o no puede cambiar ninguna configuración, puede eliminar todos los archivos temporales de wsdl:
rm /tmp/wsdl-*