現在、Server-Sent Eventsで作業していますが、奇妙な問題が発生しています。イベントが進むように、各イテレーションを経て、私は、次のエラーが発生します:次のようにサーバーのイベントサーバーサイド用Ob_end_flushで一定のエラーが発生しています
ob_end_flush(): failed to delete and flush buffer. No buffer to delete or flush in
私のコードは次のとおりです。
<?php
require "connect.php";
session_write_close();
header("Content-Type: text/event-stream\n\n");
$savedcount = 0;
while (1) {
// Who's mechanism
$query = $mysqli->query("SOME QUERY");
$rowcount = $query->num_rows;
if ($savedcount != $rowcount) {
// echo stuff
$savedcount = $rowcount; // only echo stuff if there is new content
}
ob_end_flush();
flush();
sleep(2);
}
?>
は、私は完全にバッファを理解していません。また、これがひどいことを前提にする前に、Server-Sent Eventsは特別なものであることをご理解ください。これは、MDNに表示される同様のスクリプトです。このような理由から、なぜ私はこれらのエラーを引き続き受けているのか正確にはわかりません。
提案?
バッファの内容を送信する前に、[ob_start()](http://php.net/manual/en/function.ob-start.php)を使用してバッファの内容を開始する必要があります。また、while(1)では、このスクリプトはサーバが最大実行時間に停止するまで実行されます。それはあなたが欲しいものですか? – larsAnders
はい、サーバー送信イベントが正常に動作するためにはこれが必要です – Shawn31313
バッファを起動するには、 'ob_start();' – Rasclatt