Foros del Web » Programando para Internet » PHP »

XML incompleto - fsockopen

Estas en el tema de XML incompleto - fsockopen en el foro de PHP en Foros del Web. Hola, Estoy enviando peticiones a un servidor a través de la función fsockopen. Cuando los xml de respuesta son muy grandes, estos están incompletos. El ...
  #1 (permalink)  
Antiguo 30/03/2011, 01:48
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta XML incompleto - fsockopen

Hola,

Estoy enviando peticiones a un servidor a través de la función fsockopen. Cuando los xml de respuesta son muy grandes, estos están incompletos. El proveedor me dice que los datos se envían integramente y que puede que este limitando des de mi servidor el tamaño de los XML!!!

¿Alguien tiene alguna idea de que está pasando?

Agradecería vuestra ayuda

Gracias
  #2 (permalink)  
Antiguo 30/03/2011, 02:44
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 3 meses
Puntos: 81
Respuesta: XML incompleto - fsockopen

Recuerda que php tiene limite para el tiempo en que espera un socket, en tu caso puede que ese limite este recortando la peticion.

Prueba extendiendo el valor en el php.ini con la directiva default_socket_timeout

Si no es esto, trata de poner tu codigo aca para que veamos si existe alguna cabecera que no estes tomando en cuenta.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 30/03/2011, 03:21
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: XML incompleto - fsockopen

default_socket_timeout=60; No es un problema porque la respuesta es inmendiata...

Código PHP:
Ver original
  1. function getData($xml){
  2.        $html = "";      
  3.  
  4.         $socket = @fsockopen(*url*, *port*, $errno, $errstr);
  5.        
  6.      if ($socket) {
  7.             $html = "error";
  8.         } else {
  9.  
  10.             fputs($socket, $xml);
  11.             stream_set_timeout($socket, 10);            
  12.             while (!feof($socket)) {
  13.  
  14.                 $html .= fgets($socket, 1024);
  15.             }
  16.             fclose($socket);           
  17.         }      
  18.  
  19.         return $html;
  20. }
  #4 (permalink)  
Antiguo 30/03/2011, 06:13
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: XML incompleto - fsockopen

¿Por qué no usar la función dedicada para ello, como por ejemplo SimpleXML?
Código PHP:
Ver original
  1. $sxe = new SimpleXMLElement('http://example.org/document.xml', NULL, TRUE);
  2. echo $sxe->asXML();
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 30/03/2011, 06:27
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: XML incompleto - fsockopen

Probaré con esa función...

¿Pero tienes alguna idea de porqué no se baja el xml integro? La memoria y el tiempo de ejecución del socket no es un problema: COMPROBADO.

Gracias

Etiquetas: fsockopen, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:05.