Это получило небольшую критику ... если вы не возражаете против больших кусков задницы (0x1000 октетов или около того), тогда да, PHP сделает их.
<?php
while (true) {
# output data
flush()
usleep(pow(2,18));
}
?>
PHP будет генерировать пронумерованные разделы и т. Д.
Если вы хотите отправить крошечные кусочки, как вы могли бы сделать с клиентом AJAX ... ну, я объединил вопрос OPs с некоторыми исследованиями PHP.NET, и похоже, что он хорошая вещь.
$ 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
Будет ли он в конечном итоге выжать собственный (неправильный) счетчик чанков, еще неизвестно ... но я не увидел никаких признаков этого.
<?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));
}
?>