背景:不分接口需要返回流式数据,循环一次输出一次数据
php接口给前端返回流式数据,循环一次输出一次
- 返回结果效果视频
- 完整返回结果数据格式
- 控制台网络内查看到的数据格式
- 完整代码
返回结果效果视频
php接口给前端返回流式数据,循环一次输出一次
完整返回结果数据格式
控制台网络内查看到的数据格式
完整代码
/**
* 该函数用于通过HTTP流式传输发送实时数据。
* 它使用Server-Sent Events(SSE)协议向客户端持续推送数据。
* 数据是即时发送的,不会被服务器缓存。
*/
public function streamData2()
{
// 清除当前的输出缓冲区并禁止输出缓冲,以确保数据能够即时发送给客户端
ob_end_clean();
// 设置响应头,指定使用SSE协议,禁用缓存并保持连接 alive
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');
// 对于使用Nginx服务器的情况,禁用缓冲以确保数据即时发送
header('X-Accel-Buffering: no');
// 循环模拟持续发送数据的过程
for ($i = 0; $i < 10; $i++) {
// 按照SSE格式构建并发送数据,每个数据项之间添加两个换行符以结束数据块
echo "data: " . $i . "\n\n";
// 刷新输出缓冲区并强制数据立即发送到客户端
ob_flush();
flush();
// 暂停一秒以模拟数据生成或处理的过程
sleep(1);
}
}