首页 > 解决方案 > 当服务器发送事件运行时,PHP Code Igniter 服务器对某些请求没有响应

问题描述

我让这个 SSE 运行并每 1 秒向客户端发送一次事件。问题是服务器在 SSE 运行时停止响应其他客户端的请求。

//client

var time;
var source = new EventSource(url);
source.addEventListener('time', (e)=>{
   time= e.data;
}, false);


//in my controller (CodeIgniter)

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); 
while(true){
    echo "id: 12" . PHP_EOL;
    echo "event: time\n";
    echo "data: ".date('F j, Y g:i:s A ', time()). PHP_EOL;
    echo PHP_EOL;

    ob_flush();
    flush();

    if ( connection_aborted() ) break;

    sleep(1);
};

标签: phpcodeigniterserver-sent-eventseventsource

解决方案


可能是会话锁定的问题。尝试添加session_write_close();上面的sleep(1)语句


推荐阅读