首页 > 后端开发 > php教程 > 通过Laravel流响应优化大型数据传递

通过Laravel流响应优化大型数据传递

James Robert Taylor
发布: 2025-03-05 16:23:14
原创
843 人浏览过

Optimizing Large Data Delivery with Laravel Streaming Responses

Laravel 的流式响应特性允许高效处理大型数据集,通过增量发送生成的数据,从而减少内存使用并提高响应时间。

以下是一个简单的示例,演示如何使用流式响应输出 100 行数据:

Route::get('/stream', function () {
    return response()->stream(function () {
        foreach (range(1, 100) as $number) {
            echo "Line {$number}\n";
            ob_flush();
            flush();
        }
    }, 200, ['Content-Type' => 'text/plain']);
});
登录后复制

接下来,我们来看一个更实际的例子,演示如何流式导出大型订单数据:

<?php namespace App\Http\Controllers;

use App\Models\Order;
use Illuminate\Support\Facades\DB;

class ExportController extends Controller
{
    public function exportOrders()
    {
        return response()->stream(function () {
            // 输出 CSV 头部
            echo "Order ID,Customer,Total,Status,Date\n";
            ob_flush();
            flush();

            // 分块处理订单以保持内存效率
            Order::query()
                ->with('customer')
                ->orderBy('created_at', 'desc')
                ->chunk(500, function ($orders) {
                    foreach ($orders as $order) {
                        echo sprintf(
                            "%s,%s,%.2f,%s,%s\n",
                            $order->id,
                            str_replace(',', ' ', $order->customer->name),
                            $order->total,
                            $order->status,
                            $order->created_at->format('Y-m-d H:i:s')
                        );

                        ob_flush();
                        flush();
                    }
                });
        }, 200, [
            'Content-Type' => 'text/csv',
            'Content-Disposition' => 'attachment; filename="orders.csv"',
            'X-Accel-Buffering' => 'no'
        ]);
    }
}
登录后复制

通过流式响应,我们可以高效处理大型数据集,同时保持较低的内存占用,并为用户提供即时的反馈。

以上是通过Laravel流响应优化大型数据传递的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板