Ускорить импорт категорий через CSV в 20 раз!

6

Провёл тут эксперименты. Заметил, что категории очень тормозят импорт!

Создал файл только с категориями и подкатегориями - около 30 тысяч категорий и подкатегорий до 3-5 уровней вложенности. Сам файл импорта CSV:

https://disk.yandex.ru/d/OIyr_...

Такой файл импортируется более одного часа - 70-75 минут.

Весь импорт тормозится из-за постоянного просчета left_key и right_key в waNestedSetModel.class.php для всего дерева при импорте КАЖДОЙ категории!

Потом закомментировал в waNestedSetModel.class.php строки 136-144:

            //$this->exec("UPDATE `{$this->table}`
            //             SET `{$this->right}` = `{$this->right}` + 2
            //             WHERE `{$this->right}` >= i:right".($this->root ? " AND {$this->root} = i:root" : ''),
            //             array('right' => $right, 'root' => $this->root ? $result[$this->root] : null));
            // move next elements' left
            //$this->exec("UPDATE `{$this->table}`
            //             SET `{$this->left}` = `{$this->left}` + 2
            //             WHERE `{$this->left}` > i:left".($this->root ? " AND {$this->root} = i:root" : ''),
            //             array('left' => $right, 'root' => $this->root ? $result[$this->root] : null));

и строки 146-147:

                //$this->left  => $right,
                //$this->right => $right + 1,

А также закомментировал строку 1996 в файле shopCsvProductrun.controller.php:

//$model->move($id, null, $parent_id);

Теперь импорт происходит за 2-3 минуты!

Только после импорта надо сделать repair дерева, чтобы дерево категорий отобразились:

/webasyst/shop/?module=repair&action=categories

Можете как-то поправить Импорт CSV ?

1 комментарий

  • +1
    Nail Nail 20 октября 2021 09:55 #

    Либо добавить настройку в Импорте CSV - чтобы можно было отключать эти апдейты right_key и left_key для каждого импорта новой категории. 

    Пусть лучше апдейт этих параметров происходит после импорта всего CSV файла - что займёт не более 5-10 секунд.

    Добавить комментарий

    Чтобы добавить комментарий, зарегистрируйтесь или войдите