Задать вопрос

Выгрузка отчётов: как лучше организовать хранение файлов?

Добрый день!

Сделал у себя на сайте PHP-скрипт генерации отчётов в Excel-формате (XLS), CSV и текстовом виде для программы-просмотрщика.

Скрипт запускается каждый день в 00:05 и создаёт отчёты за прошедший день для всех объектов в базе. Например, для 29 апреля получается что-то вроде:
объект-1/отчёт-2014-04-29.xls
объект-1/отчёт-2014-04-29.csv
объект-1/отчёт-2014-04-29.txt
объект-2/отчёт-2014-04-29.xls
объект-2/отчёт-2014-04-29.csv
объект-2/отчёт-2014-04-29.txt
объект-3/... и так далее

Проблема следующая. Каждый отчёт весит до 1.2 Мб (36000 строк), а с учётом того, что их делается три вида, общий вес получается порядка 3.6-3.8 Мб за день. Пространства на диске у меня всего 10 Гб, на соседнем разделе 20, но туда я делаю дампы БД, так что это не вариант :)

Какие варианты решения пришли в голову:
1) Хранить файлы только за последний месяц
Плюсы: ест меньше места
Минусы: история не сохраняется, и остаётся ограничение в количестве объектов: если их будет больше 100, то даже месяц не получится хранить
2) Грузить файлы на сторонний файлообменник (Яндекс.Диск, например) и работать через него
Плюсы: много места (на ЯДиске 200 Гб)
Минусы: непонятно, как это сделать
3) Генерировать отчёты на лету по запросу пользователя, хранить их один день и потом удалять все сгенерированные файлы
Плюсы: не требует много места и решает задачу
Минусы: долгая выгрузка по времени, работа с БД в любое время и возможные утечки памяти (для Excel использую либу PHPExcel)

Какой вариант лучше подойдёт? И как бороться с минусами подходящего варианта?
  • Вопрос задан
  • 3568 просмотров
Подписаться 5 Оценить Комментировать
Решение пользователя Станислав К ответам на вопрос (5)
crackedmind
@crackedmind
web-developer
А чем собственно данные в xls, csv & txt отличаются? Почему бы не генерировать по крону, например только csv, а остальное на лету?
Ответ написан