Мне нужно выполнить запрос, который может генерировать в ответ очень большую строку (до 1 ГБ), которая в основном представляет собой большой-большой массив JSON. Да, нумерация страниц уместна, но я подчеркиваю концепцию, чтобы дать вам представление. Symfony просто использует доктрину, чтобы получить ответ:
$stmt = $this->getEntityManager()->getConnection()->prepare(self::Q_GET_NUM_TIMEBOX);
$stmt->bindValue('t_end', $tEnd);
$stmt->bindValue('t_granularity', $tGranularity);
$stmt->bindValue('t_span', $varSelection->getStart());
$stmt->execute();
$resData = $stmt->fetchColumn(0);
а затем я создаю Response
, устанавливая содержимое, которое я получил в ответ от выполнения.
$res = new Response();
$res->setStatusCode(200);
$res->headers->set('Content-Type', 'application/json');
$res->setContent($resData);
Имейте в виду, что я упростил код для ясности: на самом деле у меня есть служба controller
, служба handler
, выполняющая запрос, и служба Repository
, возвращающая ответ на запрос.
Вернемся прямо к проблеме: это означает, что PHP должен хранить такой большой объем данных в памяти, и мне было интересно, есть ли более легкий способ вернуть ответ, чтобы меньше нагружать PHP-движок большим объемом данных.