如何使用 Symfony 导出大型 CSV 文件的技术

iam*_*015 4 php csv file symfony

我的任务是将 100,000 行记录从我的数据库导出为 csv 格式。

这样做的最佳方法是什么?我完全不知道要搜索和研究什么。

我想在下载尚未完成的同时像其他具有 PART 格式的站点一样进行块下载,同时不要让我的服务器耗尽。

我怎样才能做到这一点?

谢谢!

G1.*_*1.3 12

您可以将Symfony HttpFoundation 组件中的StreamedResponseDoctrine iterate结合使用。

像这样的东西:

$response = new StreamedResponse(function () {
    $data = $this->myQuery()->iterate();
    $csv = fopen('php://output', 'w+');
    while (false !== ($line = $data->next())) {
        fputcsv($csv, [$line[0]->column1], ';');
    }
    fclose($csv);
});
$response->headers->set('Content-Type', 'text/csv; charset=utf-8');
$response->headers->set('Content-Disposition', 'attachment; filename="file.csv"');
Run Code Online (Sandbox Code Playgroud)