Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про PHP: memory, usage, generator

Как обработать большой массив, не перегружая память?

Вопрос проверяет понимание работы памяти, умение писать масштабируемый код и опыт работы с большими объемами данных.

Короткий ответ

Большие массивы нельзя загружать целиком в память. Для этого используют итеративную обработку, генераторы или постраничную загрузку данных. Это позволяет обрабатывать данные по частям. Такой подход снижает потребление памяти и повышает стабильность приложения.

Длинный ответ

При работе с большими объемами данных (например, тысячи или миллионы элементов) важно не загружать всё сразу в память. PHP хранит массивы достаточно дорого, поэтому неправильный подход может привести к Out of memory.

Итеративная обработка

Вместо загрузки всего массива данные обрабатываются частями.

Пример

while ($row = fetchNextRow()) {
    process($row);
}

Здесь в памяти всегда находится только один элемент.

Генераторы (yield)

Генераторы позволяют возвращать элементы по одному без создания массива.

Пример

function getUsers() {
    foreach (/* источник данных */ as $user) {
        yield $user;
    }
}

foreach (getUsers() as $user) {
    process($user);
}

Работа с БД постранично

При запросах к базе используют LIMIT и OFFSET или курсоры.

SELECT * FROM users LIMIT 100 OFFSET 0;

Очистка памяти

Иногда полезно явно освобождать переменные:

unset($largeArray);

Где это применяется

  • Импорт CSV

  • Экспорт отчетов

  • Фоновые задачи

  • Очереди и воркеры

Краткий вывод

Если данные большие — никогда не загружай их целиком в массив. Используй генераторы, постраничную загрузку и потоковую обработку.

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    7

Навыки

  • PHP

    PHP

Ключевые слова

#memory

#usage

#generator

Подпишись на PHP Developer в телеграм

  • Аватар

    PHP Guru

    Mikhail Savin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.