miércoles, 13 de febrero de 2013

Magento: SOAP V2, mejorar el tiempo de respuesta

Hay muchas razones por las que una petición a un web service usando SOAP V2 puede tomar mucho tiempo, pero la primera cosa que pienso es revisar la configuración para activar la caché en la construcción del archivo WSDL. Cuando se hace una llamada a la API de Magento, Magento usa el objecto SoapServer de PHP. El objeto SoapServer necesita obtener su propio archivo WSDL para poder funcionar, y la generación y extracción de este archivo puede consumir mucho tiempo.

La solución para esto es habilitar el manejo de caché para el archivo WSDL, que por defecto viene apagado en Magento. 


Acceder al backend de Magento, luego a System->Configuration->Magento Core API
Busca el rubro "Enabled WSDL Cache" y cámbialo a Yes.



Haciendo esto, mejorarás notablemente el tiempo de respuesta de las llamadas a la API, aclaro que esto funciona a partir de la versión 1.6 de Magento usando SOAP V2, para versiones anteriores hay una solución en este link: http://www.ivoronline.com/Coding/Languages/PHP/Tutorials/PHP - API - SOAP - Extension - Introduction.php

Este parámetro no existe en versiones anteriores a 1.6 de Magento, pero también existe una extensión comercial hecha por Alan Storm, y se llama "Mercury API Extension". Aunque también se puede mirar la clase Mage_Api_Model_Server_Adapter_Soap donde las versiones anteriores de Magento deshabilitan esta caché.

Esta solución fue tomada de Alan Storm desde Stackoverflow.com

1 comentario:

  1. Buenas tardes,

    ando buscando una forma de mejorar la respuesta del API de magento y he topado con tu solución. El problema es que pese a tener la versión 1.6.2. No aparece la opción de "Enabled WSDL Cache", aunque si las otras tres opciones. ¿a que puede ser debido?

    ResponderEliminar

Datos personales

Mi foto
Podrás encontrar códigos recursos y artículos sobre PHP, JavaScript, jQuery, MooTools, Ajax, CSS, HTML, UML, RUP, AUP, XP (eXtreme Programming), Six-Sigma, CMMI, FrameWorks, Zend Framework, Magento, CodeIgniter, CakePHP, Joomla 1.5, Doctrine, Active Record, ORM, POO, MVC, MySql, PostgreSql. Este espacio está destinado a ayudar y compartir un poco de lo mucho que he recibido de la comunidad en la Red.