strip_tags remove inicio fin etiquetas ent_quotes ejemplo php header output-buffering

remove - Búfer de PHP por qué / r / n



strip_tags wordpress (3)

Primero, ¿por qué tengo que enviar la /r/n<tag>/r/n al navegador? Supongo que tiene algo que ver con los encabezados.

En segundo lugar, ¿por qué necesito algo de HTML en el medio?

Normalmente, el navegador debe esperar hasta que haya recuperado toda la respuesta hasta que se pueda procesar (solo piense en XML que puede ser válido hasta el último carácter). Pero dado que eso haría que la experiencia del usuario sea mala, la mayoría de los navegadores comienzan a analizar y renderizar los contenidos lo antes posible.

Y aquí este fragmento de HTML podría ser el iniciador para que el navegador realmente construya el DOM y comience a renderizar.

En tercer lugar, hay muchos ejemplos que usan 256 bytes en lugar de 4096. Sin embargo, el script no funciona si uso 256. ¿Están estos ejemplos desactualizados y este número volverá a cambiar en el futuro?

Como el manual insinúa que podría haber un poco más de búfer incorporado en el servidor web, este podría ser el intento de desbordar esos búfers que también son enjuagados para tener el efecto esperado.

Tengo algunas preguntas conceptuales (todas relacionadas, creo) con respecto al siguiente guión, en los comentarios. La secuencia de comandos funciona bien.

<?PHP ob_start(); // Create string to overflow browser buffer ...? $buffer = str_repeat(" ", 4096); // Indicate new header / html content ...? $buffer .= "/r/n<span></span>/r/n"; for ($i=0; $i<5; $i++) { echo $buffer.$i; ob_flush(); flush(); sleep(1); } ob_end_flush(); ?>

Primero, ¿por qué tengo que enviar la /r/n<tag>/r/n al navegador? Supongo que tiene algo que ver con los encabezados.

En segundo lugar, ¿por qué necesito algo de HTML en el medio?

En tercer lugar, hay muchos ejemplos que usan 256 bytes en lugar de 4096. Sin embargo, el script no funciona si uso 256. ¿Están estos ejemplos desactualizados y este número volverá a cambiar en el futuro?

// EDITAR RESPECTO A LOS ENLACES DE FUENTE

Este código se recopiló principalmente a partir del comentario en la función php.net sleep() y la solución a esta pregunta SO . Ninguno menciona por qué incluir /r/n .

// EDITAR RESPECTO A LOS ENCABEZADOS

Si no agrego /r/n , una etiqueta HTML y un segundo conjunto de /r/n , la secuencia de comandos no se ejecutará correctamente en Chrome o Safari (solo va a volcar todos los valores a la vez).

Además, si se llama antes de una session_start() , arroja un error: "No se puede enviar el limitador de la memoria caché de la sesión - los encabezados ya enviados".


La razón de usar /r/n sería hacer que la salida se renderice bien cuando se vea usando un visor de fuente de Windows como notepad.exe .

Nada que ver con los encabezados aquí.

Viendo que el código usa las funciones de buffering de salida, no tengo idea de por qué sienten la necesidad de intentar y desbordar un buffer de 4kb (el predeterminado en un php.ini estándar, aunque más profesionales optarían por ningún buffer de salida predeterminado).


<?php if (ob_get_level() == 0) ob_start(); for ($i = 0; $i<10; $i++){ echo "<br> Line to show."; echo str_pad('''',4096)."/n"; ob_flush(); flush(); sleep(2); } echo "Done."; ob_end_flush(); ?>