Что я хочу сделать :
Пользователь нажал на ссылку (например: BASE-URL / download / json).
Код извлекает огромные данные из базы данных и поток это в файл JSON, и пользователю предлагается загрузить этот файл.
Что я пробовал:
Создан большой (700 МБ) файл JSON.
Попытался открыть его с помощью кода, но ошибка была выдана.
file_get_contents ($ файл)
Ошибка :
Допустимый объем памяти XXX байтов исчерпан (попытался выделить YYY
байт)
Я работаю в Symfony2. Размер данных может достигать 700 МБ. Не могу увеличить выделенную память.
Как мне этого добиться? Пожалуйста, прокомментируйте, если требуется дополнительная информация.
Я смог добиться того, чего хотел, с помощью всех вышеприведенных комментариев.
Вот код для того же.
$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;
Он создал большой файл, который я смог скачать. Именно то, что я хотел. Разместите решение, чтобы оно могло помочь кому-то с такой же проблемой.
Других решений пока нет …