Переіндексація сайту на 1с-бітрікс за розкладом

Здрастуйте дорогі Новомосковсктелі!

У сьогоднішній статті мова піде про переиндексации сайту за розкладом.

Зіткнулися з таким завданням: на сайті щодня відбувається імпорт товарів в форматі CSV. У Інфоблоки налаштоване все правильно (прапорець індексувати елементи для модуля пошуку - встановлений). У товару є властивість артикул. Це властивість бере участі в пошуку. Після імпорту, пошук не може знайти нові товари. Причина виявилася в тому, що ні переіндексувати пошуковий індекс у товарів. Рішення проблеми: Налаштування> Пошук> Переіндексація. запустити переіндексацію. якщо ви завантажуєте базу в ручну і не часто. У моєму випадку це рішення не підходило, тому що переіндесіровать пошук вручну кожен день мені не представлялося цікавим заняттям. Реалізація рішення проблеми складалася з 2-ух етапів:

Скрипт для переиндексации сайту.

Функція bitrix api для переиндексации сайту - CSearch :: ReIndexAll. Вона приймає 4 параметра:

  1. Якщо дорівнює true, то на першому кроці пошуковий індекс буде повністю очищений. За замовчуванням дорівнює false, що призводить до перебудови індексу тільки тих елементів, вміст яких змінилося.
  2. Якщо заданий і більше нуля, то як тільки час виконання функції перевищить значення цього параметра, її виконання завершиться. Дані для початку наступного кроку будуть повернуті як результат роботи функції.
  3. Зберігає стан процесу індексації (прогрес) на початок кроку.
  4. Видаляє історію / статистику підказок для рядка пошуку. Необов'язковий параметр, за замовчуванням приймає значення false.

У мене вийшов наступний код:

Скрипт для переиндексации сайту на 1с-Бітрікс написаний. Функцію додамо в файл /bitrix/php_interface/init.php. Переходимо до другого етапу.

Створюємо агента для виконання скрипта в CMS бітрікс.

Переіндексація сайту на 1с-бітрікс за розкладом

Поясню значення полів:

  • дата останнього запуску - якщо агент періодичний, то буде виведено час останнього запуску при його редагуванні;
  • дата і час наступного запуску - час старту роботи агента, якщо він не періодичний то виконається 1 раз в цей час;
  • модуль - цей модуль буде автоматично підключатися, а саме буде підключатися файл / bitrix / modules / ID модуля / include.php. в цьому випадку необхідно переконатися, що функція-агент буде доступна після підключення цього файлу; як варіант, я міг написати так:

Переіндексація сайту на 1с-бітрікс за розкладом

попередньо додавши функцію, отриману на 1-му етапі, в клас CSearchStatistic, який знаходиться в файлі /bitrix/modules/search/classes/general/statistic.php. Але краще використовувати варіант, який я описав вище, тому що він більш мобільний.

  • функція агента - це основне поле, ім'я функції, яку я написав в першому етапі це - Reindex_Search ();
  • ID користувача - це фільтр виконання на хіті для певного користувача;
  • Інтервал я задав 86400 секунд, що є 24 години.

Переіндексація сайту на 1с-Бітрікс за розкладом (кожен день) готова.

Поділитися 0 0 0 0