Pregunta

¿Desea leer el tamaño de archivo de SOAP POST? ¿Alguna de las mejores prácticas?

$data = fopen('php://input','rb');
$content = fread($data,5000);

$dom = new DOMDocument();
$dom->loadXML($content);

¿Le gustaría que el 5000 sea dinámico ya que cada tamaño de SOAP POST será diferente o esto importa?

Usar fread () sería genial

¿Fue útil?

Solución

Umm. Si puede leerlo con ' fread ', no veo por qué no puede leer el mismo texto EXACTO con ' file_get_contents () '. Lo uso unas cuantas veces y recordando que he intentado con ambos.

En cuanto a la mejor práctica para ' fread ', lo que necesita es el tamaño del archivo que puede obtener de getallheaders ().

Entonces, si todavía prefieres usar ' fread ' aquí está el código.

$data = fopen('php://input','rb');
$Headers = getallheaders();
$CLength  = $Headers['Content-Length'];
$content = fread($data,$CLength);

$dom = new DOMDocument();
$dom->loadXML($content);

El código anterior se explica por sí mismo, por lo que no hay necesidad de explicaciones adicionales. Solo un poco, tenga en cuenta que si la longitud es más de 8192 bytes El contenido será recortado. Así que es mejor que compruebes la longitud de lectura para ver si está recortada. (No tendrás que preocuparte si usas ' file_get_contents () ').

Espero que esto ayude

Otros consejos

Puedes intentar lo siguiente:

$xml = file_get_contents('php://input')

Esto obtendrá todos los contenidos, sin importar la longitud de los datos.

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