Задать вопрос
@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()) {
}


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


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

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

Похожие вопросы