@vladroots

Как вывести csv файл на странице с пагинацией в Bitrix?

Добрый день! Подскажите возможно реализовать следующее: есть файл csv размер составляет 400мб. Не хочу забивать базу данных таким объемом, так как данные каждый месяц будут меняться. Решить хочу просто подменой свежего файла каждый месяц.
Возможно вывести информацию из csv на странице с фильтрацией по полям и постраничной навигацией например по 100 строк?

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/csv_data.php");
$csvFile = new CCSVData('R', true);
$csvFile->LoadFile($_SERVER["DOCUMENT_ROOT"]."/baza/my.csv");
$bFirstHeaderTmp = $csvFile->GetFirstHeader();
$csvFile->SetDelimiter(',');
while ($arRes = $csvFile->Fetch()) {
}


На просторах нашел кусок кода но ресурсов сервера не хватает что бы прочитать такой объем. Подскажите куда двигаться? Буду благодарен за готовый кусочек кода. Заранее спасибо.
  • Вопрос задан
  • 338 просмотров
Пригласить эксперта
Ответы на вопрос 2
summoner2015
@summoner2015
Backend всему голова
Без БД в данном случае можно обойтись, но это очень костыльный вариант:
  1. Работаем с файлом построчно через fopen() и fgets()/fgetcsv(), а не через CCSVData
  2. Выбираем из файла только те строки, которые подходят к текущему состоянию пагинации
  3. Кэшируем нашу выборку с учётом пагинации и фильтров


Мне кажется что лучше всё-же использовать таблицу в БД, которая будет очищаться при импорте нового csv.
Ответ написан
Комментировать
@eternalfire
нельзя, только в базе, вы предлагаете при загрузке страницы каждый раз читать файл в 400мб?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы