Esto tiene un poco de vauge ... si no te molestan los trozos grandes, (0x1000 octetos más o menos), entonces sí, PHP los hará.
<?php
while (true) {
# output data
flush()
usleep(pow(2,18));
}
?>
PHP generado las secciones numeradas, etc.
Si desea enviar pequeños trozos pequeños, como se puede ver con un cliente AJAX ... bueno, yo he combinado la cuestión PO, con algunas investigaciones en PHP.NET, y parece que fue una buena cosa.
$ echo -en "GET/chunked/HTTP/1.1 \ r \ nHost: ec \ r \ n \ r \ n" | nc localhost 80
HTTP/1.1 200 OK
Date: Wed, 23 May 2012 13:03:01 GMT
Server: Apache/2.2.9 (Debian) PHP/5.3.5-1 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8o
X-Powered-By: PHP/5.3.5-1
Transfer-encoding: chunked
Content-Type: text/html
14
Teachers have class.
50
We secure our friends not by accepting favors but by doing them.
-- Thucydides
48
Vulcans never bluff.
-- Spock, "The Doomsday Machine", stardate 4202.1
31
All kings is mostly rapscallions.
-- Mark Twain
41
Reappraisal, n.:
An abrupt change of mind after being found out.
49
He who knows, does not speak. He who speaks, does not know.
-- Lao Tsu
Sea o no con el tiempo se exprima hacia fuera del propio recuento trozo (incorrecta), queda por ver ... pero no vi ninguna señal de ello.
<?php
header("Transfer-encoding: chunked");
@apache_setenv('no-gzip', 1);
@ini_set('zlib.output_compression', 0);
@ini_set('implicit_flush', 1);
for ($i = 0; $i < ob_get_level(); $i++) ob_end_flush();
ob_implicit_flush(1); flush();
function dump_chunk($chunk)
{
printf("%x\r\n%s\r\n", strlen($chunk), $chunk);
flush();
}
for (;;) {
$output = array();
exec("/usr/games/fortune", $output);
dump_chunk(implode("\n", $output));
usleep(pow(2,18));
}
?>
Puede limpiar después de cada trozo. – Gumbo