Skip to content

Команды управления инфоблоками

Команды для работы с инфоблоками: просмотр списка, элементы инфоблоков и управление фасетными индексами.

iblock:list

Выводит список всех инфоблоков с полной информацией.

Синтаксис

bash
php bitrix.php iblock:list [опции]

Опции

  • -v, -vv - подробный вывод с дополнительной информацией
  • --type=<type> - фильтр по типу инфоблока

Примеры использования

bash
# Список всех инфоблоков
php bitrix.php iblock:list

# С подробной информацией
php bitrix.php iblock:list -v

# Фильтр по типу
php bitrix.php iblock:list --type=catalog
php bitrix.php iblock:list --type=news

Вывод команды

Команда выводит таблицу со следующей информацией:

  • ID - идентификатор инфоблока
  • Код - символьный код
  • Название - название инфоблока
  • Тип - тип инфоблока
  • Активен - статус активности
  • Элементов - количество элементов
  • Разделов - количество разделов (в подробном режиме)
  • Сортировка - порядок сортировки (в подробном режиме)
  • Дата создания - когда создан инфоблок (в подробном режиме)

iblock:elements

Выводит список элементов указанного инфоблока.

Синтаксис

bash
php bitrix.php iblock:elements <id> [опции]

Аргументы

  • id - ID инфоблока

Опции

  • --limit=N - ограничить количество элементов (по умолчанию: 100)
  • --active - показать только активные элементы
  • --section=<id> - фильтр по разделу
  • -v, -vv - подробный вывод

Примеры использования

bash
# Элементы инфоблока с ID=1
php bitrix.php iblock:elements 1

# Только 50 элементов
php bitrix.php iblock:elements 1 --limit=50

# Только активные элементы
php bitrix.php iblock:elements 1 --active

# Элементы из конкретного раздела
php bitrix.php iblock:elements 1 --section=5

# С подробной информацией
php bitrix.php iblock:elements 1 -v

# Комбинация фильтров
php bitrix.php iblock:elements 1 --active --limit=100 -v

Вывод команды

Команда выводит таблицу со следующей информацией:

  • ID - идентификатор элемента
  • Код - символьный код
  • Название - название элемента
  • Активен - статус активности
  • Раздел - ID раздела
  • Сортировка - порядок сортировки
  • Дата создания - когда создан элемент (в подробном режиме)
  • Дата изменения - последнее изменение (в подробном режиме)
  • Превью - наличие картинки превью (в подробном режиме)
  • Детально - наличие детальной картинки (в подробном режиме)

iblock:facet-rebuild

Пересоздает фасетный индекс для инфоблоков (используется для умного фильтра).

Синтаксис

bash
php bitrix.php iblock:facet-rebuild [iblock-id] [опции]

Аргументы

  • iblock-id - ID инфоблока (необязательный)

Опции

  • --list - показать список инфоблоков с информацией о фасетном индексе
  • --all - пересоздать индексы для всех инфоблоков с включенным фасетным индексом

Примеры использования

bash
# Список инфоблоков с информацией о фасетном индексе
php bitrix.php iblock:facet-rebuild --list

# Пересоздать индекс для конкретного инфоблока
php bitrix.php iblock:facet-rebuild 1

# Пересоздать индексы для всех инфоблоков с включенным фасетным индексом
php bitrix.php iblock:facet-rebuild --all
php bitrix.php iblock:facet-rebuild

# С подробным выводом прогресса
php bitrix.php iblock:facet-rebuild 1 -v

Что такое фасетный индекс

Фасетный индекс - это специальная структура данных, которая используется для быстрой работы умного фильтра в инфоблоках. Индекс содержит предварительно рассчитанные данные о всех возможных комбинациях свойств элементов.

Когда нужно пересоздавать индекс

Пересоздание фасетного индекса необходимо:

  • После массового импорта товаров
  • После изменения свойств инфоблока
  • При изменении значений свойств элементов
  • При возникновении проблем с фильтром
  • После обновления модуля инфоблоков
  • Периодически для оптимизации (например, раз в неделю)

Производительность

⚠️ Внимание! Пересоздание фасетного индекса может занять длительное время для больших инфоблоков.

Рекомендуется запускать пересоздание индекса в периоды низкой нагрузки.

Влияние на систему

Во время пересоздания индекса:

  • ✅ Сайт продолжает работать нормально
  • ⚠️ Умный фильтр может работать медленнее
  • ⚠️ Возрастает нагрузка на базу данных
  • ⚠️ Возрастает использование дискового пространства

Использование в автоматизации

Регулярное обновление фасетных индексов

bash
#!/bin/bash
# Обновление фасетных индексов всех инфоблоков

cd /var/www/bitrix

echo "Начало обновления фасетных индексов: $(date)"
php bitrix.php iblock:facet-rebuild --all
echo "Завершено: $(date)"

Обновление после импорта

bash
#!/bin/bash
# Импорт товаров с последующим обновлением индексов

# ID инфоблока каталога
CATALOG_IBLOCK_ID=2

# Импорт данных
/path/to/import-script.sh

# Пересоздание фасетного индекса
cd /var/www/bitrix
php bitrix.php iblock:facet-rebuild $CATALOG_IBLOCK_ID

# Очистка кеша
php bitrix.php cache:type:clear catalog

echo "Импорт и индексация завершены"

Мониторинг состояния индексов

bash
#!/bin/bash
# Проверка состояния фасетных индексов

cd /var/www/bitrix

echo "=== Состояние фасетных индексов ===" > /tmp/facet_report.txt
echo "Дата: $(date)" >> /tmp/facet_report.txt
echo "" >> /tmp/facet_report.txt

php bitrix.php iblock:facet-rebuild --list >> /tmp/facet_report.txt

# Отправка отчета
mail -s "Facet Index Report" admin@example.com < /tmp/facet_report.txt

Обновление по расписанию

bash
# Добавить в crontab
# Обновление фасетных индексов каждую ночь в 4:00
0 4 * * * cd /var/www/bitrix && php bitrix.php iblock:facet-rebuild --all >> /var/log/facet_rebuild.log 2>&1

Выборочное обновление критичных инфоблоков

bash
#!/bin/bash
# Обновление только важных инфоблоков

CRITICAL_IBLOCKS=(1 2 5 7)

cd /var/www/bitrix

for iblock_id in "${CRITICAL_IBLOCKS[@]}"; do
    echo "Обновление индекса для инфоблока $iblock_id"
    php bitrix.php iblock:facet-rebuild $iblock_id
done

echo "Обновление критичных инфоблоков завершено"

Troubleshooting

Индекс не создается

Проблема: Ошибка при создании фасетного индекса

Решения:

  1. Проверьте, что у инфоблока включен фасетный индекс
  2. Проверьте права доступа к базе данных
  3. Проверьте наличие свободного места на диске
  4. Проверьте логи MySQL/MariaDB
  5. Увеличьте лимиты памяти PHP

Timeout при создании индекса

Проблема: Превышено время выполнения скрипта

Решения:

  1. Увеличьте max_execution_time в php.ini
  2. Разбейте процесс на части (обрабатывайте по одному инфоблоку)
  3. Оптимизируйте базу данных перед индексацией
  4. Запускайте в периоды низкой нагрузки

Умный фильтр не работает после индексации

Проблема: Фильтр показывает неправильные результаты или не работает

Решения:

  1. Очистите кеш: php bitrix.php cache:clear
  2. Проверьте настройки умного фильтра в компоненте
  3. Пересоздайте индекс еще раз
  4. Проверьте, что свойства настроены для участия в фильтре

Ошибка памяти

Проблема: Fatal error: Allowed memory size exhausted

Решения:

  1. Увеличьте memory_limit в php.ini
  2. Обрабатывайте инфоблоки по отдельности
  3. Оптимизируйте количество свойств, участвующих в фильтре
  4. Рассмотрите возможность архивирования старых элементов

Полезные советы

💡 Регулярно обновляйте индексы - настройте автоматическое обновление по расписанию

💡 Обновляйте после импорта - всегда пересоздавайте индекс после массового изменения данных

💡 Мониторьте производительность - следите за временем создания индекса

💡 Оптимизируйте свойства - включайте в фильтр только необходимые свойства

💡 Планируйте обновления - запускайте индексацию в периоды низкой нагрузки

💡 Проверяйте результаты - после индексации проверьте работу умного фильтра


Смотрите также

Документация BXMax CLI