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

时间:2015-09-29 08:53:04

标签: php json symfony streaming

我想做什么:
用户点击了一个网址(例如:BASE-URL / download / json) 代码从数据库中获取大量数据,将其提取到JSON文件中,并提示用户下载该文件。

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

  

的file_get_contents($文件)

错误:

  

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

我在Symfony2工作。数据大小可达700MB。无法增加分配的内存。 我怎样才能做到这一点?如果需要任何进一步的信息,请发表评论。

1 个答案:

答案 0 :(得分:7)

在上述所有评论的帮助下,我能够实现我想要的目标 这是相同的代码。

$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;

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