Limpiar la caché de SOAP en PHP

Todo el que ha probado a trabajar con SOAP en PHP sabe que no es precisamente una delicia. Cuando te enfrentas con SOAP por primera vez en tu vida te puedes pasar varios días hasta que consigues hacerlo funcionar (y eso que hoy en día es mucho más fácil). Pero esta maravillosa tecnología siempre puede darnos algunos disgustos adicionales.

Por ejemplo, cuando cambias el nombre de uno de los servicios (o webservices) puede que te encuentres con este error:

Server did not recognize the value of HTTP Header SOAPAction

Si compruebas en la llamada que haces a SOAP seguramente el nombre que estás usando sea el correcto. Entonces ¿a qué viene este error? Lo más probable será que la llamada está usando la caché así que tendrás que “limpiarla”.

Tienes dos opciones:

1) Desactivar la caché temporalmente:

$this->nusoapDefault = new SoapClient( $soapUrl, [ 'cache_wsdl' => WSDL_CACHE_NONE ] );

Esto hará que las próximas llamadas no usen la caché. El problema es que tendrás una pequeña pérdida de rendimiento. Puedes mantener esto mientras haces pruebas pero cuando termines será mejor borrar la caché.

2) Borrar la caché de SOAP.

Los ficheros de la caché de SOAP se almacenan en la carpeta /tmp (en un servidor tipo Linux), normalmente dentro de subcarpetas cuyos nombres empienzan por wdsl. Éstas puedes borrarlas tranquilamente (ojo no borres otras cosas de la carpeta /tmp).

Por cierto, estoy escribiendo un nuevo libro de Programación Orientada a Objetos en PHP. Sígueme en twitter y no te lo pierdas. Va a ser un bombazo.

¿Por qué prefiero Vagrant sobre Wamp Server?

Hoy he publicado en el blog de Urlan Heat un artículo contando por qué prefiero usar Vagrant para crear mis entornos de desarrollo en lugar de usar Wamp o tener un servidor Apache y MySQL instalado en mi ordenador.

Si no has probado Vagrant te recomiendo que le eches un vistazo.

¿Por qué es mejor usar Vagrant que Wamp o similares?

Programación orientada a objetos en PHP. 3: Encapsulación

Otra entrega más (y ya van tres) del mini curso de programación orientada a objetos en PHP. Esta vez hablo de encapsulación. No te lo pierdas:

Programación orientada a objetos en PHP capítulo 3: ¿Por qué no hacer todo public? (Encapsulación).

Programación orientada a objetos en PHP 2: Constructores y destructores

Y aquí va la segunda entrega del minicurso de programación orientada a objetos en PHP. Esta vez toca el turno a los constructores y a los destructores. Si todo va bien mañana publicaré el enlace al vídeo.

Programación orientada a objetos en PHP 2: Constructores y destructores