php - 当服务器发送事件运行时,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);
};
解决方案
可能是会话锁定的问题。尝试添加session_write_close();
上面的sleep(1)
语句
推荐阅读
- google-cloud-platform - 运行程序时谷歌云存储桶的路径
- flutter - 有什么方法可以在设备上调用 UPI 应用程序
- azure-cosmosdb - CosmosDB ST_WITHIN 和 ST_INTERSECTS 给出的结果与使用显式纬度/经度值不同
- date - SAS 倒计时到日期年/月/日
- javascript - 为什么当我在 VS 代码中控制台记录 DOM 元素时,有时会收到类似 HTML 的树,有时会收到 JSON 属性
- typescript - React Native & Typescript,如何使用 MobX 添加界面
- xml - 来自选择框的 XML 过滤器
- xml - 尝试在命令行中使用 XmlSec 对 XML 进行签名,不断收到“丢失文件错误”?
- swift - 如何根据内容动态制作 Swift UIStackView 大小?
- php - 如何过滤深度数组?