服务器发送事件不显示数据库中的数据

时间:2019-07-28 16:04:10

标签: php server-sent-events

我有此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);
      }
  }
}
?>

0 个答案:

没有答案