加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:49:19 所属栏目:PHP教程 来源:网络整理
导读:我想做的事 : 用户点击了一个网址(例如:BASE-URL / download / json). 代码从数据库中获取大量数据并将其流式传输到 JSON文件中,并提示用户下载该文件. 我尝试了什么: 创建了一个大型(700 MB)JSON文件. 尝试用代码打开它,但是抛出了错误. file_get_conten
我想做的事 :
用户点击了一个网址(例如:BASE-URL / download / json).
代码从数据库中获取大量数据并将其流式传输到 JSON文件中,并提示用户下载该文件.

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

file_get_contents($file)

错误:

Allowed memory size of XXX bytes exhausted (tried to allocate YYY
bytes)

我在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;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读