如何在symfony2中下载(流式传输)大文件


How to download (stream) large files in symfony2

我想做的:
用户点击一个url(例如:BASE-URL/download/json)。
代码从数据库中获取大量数据,并将流成JSON文件,并提示用户下载该文件。

我试过了:
创建了一个大的(700 MB) JSON文件。尝试用代码打开它,但抛出错误。

file_get_contents(文件)美元

错误:

允许的内存大小为XXX字节耗尽(试图分配YYY)字节)

我在Symfony2工作。数据的大小可以达到700MB。无法增加分配的内存。我怎样才能做到这一点呢?如需进一步资料,请留言

在上面所有注释的帮助下,我能够实现我想要的。
下面是相同的代码:

$response = new StreamedResponse();  
$i = -999999;  
$response->setCallback(function () {  
    while($i < 999999){  
        echo '{"G1ello":"hualala"}';  
        $i = $i + 1;  
    }  
});  
$filename = "Data.json";  
$contentDisposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, $filename);
$response->headers->set('Content-Type', 'application/json');
$response->headers->set('Content-Disposition', $contentDisposition);
return $response;

它创建了一个大文件,我可以下载。这正是我想要的。张贴解决方案,以便它可以帮助别人有同样的问题。