【发布时间】:2015-09-30 13:01:54
【问题描述】:
我在控制器操作中编写了以下代码。
$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;
通过这种方式,我能够下载 1.7 GB 的 JSON 文件。
另一方面,我创建了一个 700 MB 的文件并尝试使用代码获取其内容
file_get_contents($file)
错误被抛出。
已用完 XXX 字节的允许内存大小(尝试分配 YYY 字节)
我不确定 StreamedResponse 和 setCallback 函数在这里是如何工作的。谁能解释一下?
【问题讨论】: