У меня есть приложение PHP, которое возвращает значения прогнозов клиенту в формате json. Я держу все данные, так как собираю больше в переменной.Хранение огромных наборов данных в переменных (ошибка памяти exaust)
Если клиент запрашивает только значения за короткий промежуток времени, жизнь хороша, и он получает то, о чем просил. Проблема в том, когда он запрашивает 1 или более лет прогнозов. Ошибки памяти exaust возникают из-за того, что набор данных, хранящийся в переменной, огромен.
Я не хочу расширять память, думая об альтернативных способах ее выполнения.
Я столкнулся с файлом с памятью. Это хорошее решение, или вы можете думать о других? Спасибо!
Im, использующий gearman, и для каждой информации, полученной рабочим, в мою переменную прогноза добавляется новый массив со значениями.
Как только все закончено, я возвращаю его клиенту.
public function requestCompleteApi(\GearmanTask $task)
{
$this->forecast[] = unserialize($task->data());
}
не поможет. если у вас закончилась память, содержащая необработанные данные, у вас наверняка закончится нехватка памяти, а строка json будет построена. json не является «раздутым» как xml и т. п., но ваш средний массив WILL занимает больше места в виде строки json, чем в случае необработанного размера байтов данных. –
Вам нужен клиент для хранения этих данных или просто его отображения? Если это просто отображение, которое вы хотите, я бы попробовал разбиение на страницы, где каждая страница показывает около 50 результатов. – vlatkozelka
Да, клиенту потребуются данные для обработки в другом месте. –