Pregunta

Estoy usando NuSOAP en PHP 5.2.6 y veo que el tamaño máximo del mensaje es de solo 1000 bytes (lo que hace que sea difícil hacer algo significativo). ¿Está configurado en el WSDL del punto final o es algo que puedo configurar en NuSOAP?

¿Fue útil?

Solución

Respecto al FUD sobre un " límite de 1000 bytes "; ... Busqué el código fuente nusoap_client y encontré que el límite solo es efectivo para salida de depuración .

Esto significa que todos los datos se procesan y pasan al servicio web (independientemente de su tamaño), pero solo los primeros 1000 bytes (o más precisamente: caracteres) se muestran en el registro de depuración.

Aquí está el código:

$this->debug('SOAP message length=' . strlen($soapmsg) . ' contents (max 1000 bytes)=' . substr($soapmsg, 0, 1000));

// send
$return = $this->send($this->getHTTPBody($soapmsg),$soapAction,$this->timeout,$this->response_timeout);

Como puede ver claramente, la llamada a getHTTPBody () usa el $ soapmsg completo, y solo la salida de depuración está limitada a los primeros 1000 caracteres. Si desea cambiar esto, simplemente cambie la llamada substr () para satisfacer sus necesidades, o simplemente reemplácela por $ soapmsg (para que todo se muestre en la depuración salida, también).

Esto no debería tener absolutamente nada que ver con ningún límite real de los datos realmente enviados. Por supuesto, podría haber otros factores que realmente limitan el tamaño de lo que puede enviar (por ejemplo, el límite de RAM establecido para su script PHP, las limitaciones de su implementación HTTP o la falta de memoria virtual disponible), pero dé por sentado que no hay tal cosa como un " límite de 1000 bytes " para los datos que puede enviar con NuSOAP.

Otros consejos

Sólo estoy familiarizado con PHP, y nunca he usado el paquete NuSOAP. Sin embargo, el tamaño del mensaje SOAP solo debe estar limitado por el medio de transporte. En el caso de HTTP, debería ser bastante ilimitado (la limitación de 16384 bytes en las solicitudes POST en forma no se debe a SOAP, se debe a limitaciones del navegador (que en realidad ya no existen, pero no lo sé con certeza) ).

Recomendaría buscar una dirección de contacto para los autores / mantenedores de NuSOAP y preguntar directamente. A menos que haya algo en el WSDL (y no recuerdo nada en la especificación del WSDL que limitara todo un tamaño de cuerpo del mensaje ... parámetros individuales (a través de las facetas del Esquema XML), pero no el cuerpo general), entonces la limitación parecería estar en el kit de herramientas.

En una caja de producción, utilizamos las funciones incorporadas de PHP 5.2.5 como servidor y NuSoap en PHP 4 y hemos transferido con éxito mensajes de más de 1 MB.

No creo que exista una limitación en ninguno de los productos, pero debe verificar su configuración en php.ini para

max_input_time        (defaults to 60)

Este es el momento en que cada script puede analizar la entrada. Si se agota el tiempo antes de que se complete el análisis, el script ni siquiera se ejecutará.

Una nota al margen: si es posible, sugiero migrar a las clases de extensión de SoapClient / SoapServer PHP. NuSoap ha demostrado no ser muy confiable en situaciones de carga pesada, especialmente cuando se trata de la memoria caché. A veces vimos NuSoap simplemente "olvidando" wsdl definiciones y trabajar en modo none-wsdl. Extraño ...

No ha dicho si está enviando o recibiendo mensajes SOAP. Si está enviando, verificaría que NuSOAP esté enviando mediante POST en lugar de GET (probablemente tendrá que buscar en el código para ver; he encontrado que la documentación es escasa). Si está recibiendo, verifique su configuración de PHP.INI para cosas como memoria y tamaño de datos. En realidad, revise los límites de su memoria, de todos modos, NuSOAP es un montón de memoria, IIRC.

Creo que el tamaño del mensaje estará limitado más bien por un límite de memoria de PHP, que por un valor codificado. Al menos podría enviar una cadena de 6.5MB sin ningún problema. Cuando intenté enviar una cadena de 8 MB, obtuve una excepción de memoria insuficiente dentro de nusoap.php (mi servidor tiene un límite de 64 MB para PHP).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top