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

Laravel中能否保持连接存活并分块发送响应?

在Laravel中实现HTTP实时逐行响应(保持连接存活)

如果需要在处理批量操作时,保持HTTP连接存活并实时逐行向客户端返回响应(类似实时日志输出),可以通过Laravel的响应发送机制实现。以下是具体的示例代码:

use Illuminate\Support\Facades\Http;
use Carbon\Carbon;

for ($id = 0; $id < 100; $id++) {
    $response = Http::get("http://api.example.com/user/{$id}");

    response()->send('['.Carbon::now()->format('d/m/Y H:i:s')."] - {$response->status()} - {$response->body()}");
}

return response()->send('All requests done');

代码说明

这段代码的逻辑是:

  • 循环发起100次对用户API的请求
  • 每次请求完成后,立即调用response()->send()将带时间戳的请求状态、响应内容实时发送给客户端
  • 所有请求完成后,发送最终的完成提示

场景对比

这种方式和Artisan命令中用$this->line('bla')实时输出控制台进度的逻辑一致,但适配了HTTP请求场景——客户端可以实时看到每一步的处理结果,无需等待全部操作完成。

优势

相比将所有结果拼接成单个字符串后一次性返回,实时逐行响应能让用户及时获取处理进度,尤其是在处理耗时较长的批量操作时,体验会更友好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:55:57