Что я хочу сделать :
Пользователь ударил URL-адрес (например: 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;
Он создал большой файл, который я смог загрузить. Именно то, что я хотел. Публикация решения, чтобы он мог помочь кому-то с той же проблемой.