コメントで、次のスクリプトに関していくつかの概念的な質問があります(すべて関連していると思います)。スクリプトは正常に機能します。
<?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();
?>
まず、なぜ\r\n<tag>\r\n
ブラウザに送信する必要があるのですか?ヘッダーと関係があると思います。
次に、なぜ途中でHTMLが必要なのですか?
第三に、4096ではなく256バイトを使用する例がたくさんあります。ただし、256を使用するとスクリプトが機能しません。これらの例は古くなっていますか?この数は将来再び変更されますか?
//ソースリンクに関する編集
このコードは、主にphp.netsleep()
関数の解説とこのSO質問の解決策から収集されました。どちらも、を含める理由については言及していません\r\n
。
//ヘッダーに関する編集
\r\n
、HTMLタグ、および2番目のセットを追加しないと\r\n
、スクリプトはChromeまたはSafariで正しく実行されません(すべての値を一度にダンプするだけです)。
さらに、これがの前に呼び出されると、session_start()
「セッションキャッシュリミッターを送信できません-ヘッダーはすでに送信されています」というエラーがスローされます。