Задать вопрос
nepster-web
@nepster-web

Оперативная память vs файловая система?

Предположим у нас есть CLI приложение, которое анализирует большой объем данных. Ну относительно большой, например парсит сайт и считает кол-во div тегов, далее записывает это в качестве отчета в файл.

Для того, чтобы обойти весь сайт нужно достаточно кол-во времени, предположим не большой сайт сможем обойти за 30 секунд, собрать все данные в массив и уже после всего из этого массива собрать файл с отчетом. Так кстате работают многие приложения, например сборщики frontend, они вначале что-то грузят в оперативку и только потом в файловую систему. Я сталкивался с такой ситуацией, что если мало оперативки, тот же composer или gulp не могут загрузить большие пакеты (например на сервере не смог загрузить gulp-image, где было менее 400 мб оперативки).

Вернемся к анализатору сайта, что если нам не хватит оперативки или возникнет другая ошибка ? Перед нами момент, либо мы получаем результат целиком и полностью либо не получаем ничего. Вопрос почему так делают, почему работают с оперативной память чаще, чем скажем записывают данные в файл или базу, чтобы в случае сбоя хоть какой-то но результат был ?
  • Вопрос задан
  • 241 просмотр
Подписаться 2 Оценить Комментировать
Ответ пользователя Сергей Протько К ответам на вопрос (4)
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
пишем результаты в очередь, обработчик очереди записывает репорт в файл или добавляет еще задачи в очередь и т.д. и т.д. Если использовать какие-нибудь менеджеры очередей у них обычно есть возможность персистить очереди на файловую систему для надежности.
Ответ написан