これは少し漠然としています...大きな丸みを帯びたチャンク(0x1000オクテット程度)を気にしないのであれば、はい、PHPがそれらを作成します。
<?php
while (true) {
# output data
flush()
usleep(pow(2,18));
}
?>
PHP は、番号付きのセクションなどを生成します。
AJAX クライアントの場合のように、ごく小さなチャンクを送信したい場合...まあ、私は OP の質問と PHP.NET に関するいくつかの調査を組み合わせましたが、彼は良いことをしているように見えます.
$ echo -en "GET /chunked/ HTTP/1.1\r\nホスト: ec\r\n\r\n" | nc ローカルホスト 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));
}
?>