如何在 symfony2 中下载(流)大文件
How to download (stream) large files in symfony2
我想做什么:
用户点击 url(例如: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;
它创建了一个我可以下载的大文件。正是我想要的。发布解决方案,以便它可以帮助有同样问题的人。
我想做什么:
用户点击 url(例如: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;
它创建了一个我可以下载的大文件。正是我想要的。发布解决方案,以便它可以帮助有同样问题的人。