You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用Symfony内置服务器的output_buffering以实现SSE流?

Symfony内置服务器下SSE流输出缓冲问题求助

我需要实现SSE流,在Symfony项目的public目录下创建了独立PHP文件,代码如下:

<?php

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

echo "data: 1\n\n"; flush(); sleep(1);
echo "data: 2\n\n"; flush(); sleep(1);
echo "data: 3\n\n"; flush(); sleep(1);
echo "data: 4\n\n"; flush(); sleep(1);

直接执行php public/sse.php时,每秒输出一行,符合预期;但启动Symfony内置服务器(symfony server:start -d)后,用curl https://127.0.0.1:8000/sse.php请求,需等待4秒才一次性输出所有内容,推测是Symfony服务器仍在缓冲输出。

已尝试以下操作但均无效:

  • 执行php -i | grep output_buffering返回output_buffering => 0 => 0,确认PHP本身无输出缓冲
  • curl添加--insecure参数排除SSL问题,无效
  • 在第一个echo前添加ob_end_flush(),无效

补充测试结果:

  • 执行curl --no-buffer -H 'Accept: text/event-stream' https://127.0.0.1:8000/sse.php仍一次性输出所有内容
  • 直接运行PHP文件无请求记录且无缓冲,输出正常
  • 使用PHP内置服务器时,PHP和curl测试均正常,每秒输出一行
  • 将输出改为echo str_repeat('1', 4096) . "\n\n"; flush(); sleep(1);,依然被缓冲

目前无法定位问题原因,求解决思路。

内容的提问来源于stack exchange,提问作者Jack33

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:52:03