我有此SSE php代码,如果它们具有错误标志,则应该从db获取数据,这是为了防止较旧的数据显示给客户端。 问题是,如果数据库表包含新记录,则有时无法建立连接,否则就不会显示或仅显示一次数据。我需要找到一个解决方法,任何帮助将不胜感激。
sse.php
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
//header("Access-Control-Allow-Origin: *");
require_once __DIR__.'/vendor/autoload.php';
use RedBeanPHP\R;
R::setup('sqlite:messages.db');
while(1){
if( connection_aborted() ){
exit();
}
else{
$message = R::findOne( 'messages', 'room_id = ?', [ $_GET['room'] ] );
if( !empty($message) && $message->read == false ){
echo 'id: '. $message->id . PHP_EOL;
echo 'data: '. $message->body . PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
$message->read = true;
R::store($message);
}
}
}
?>