Пошаговая синхронизация пользователей

Урок 317 из 713
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
3 из 5
Просмотров: 2478
Дата изменения: 29.04.2026
Недоступно в лицензиях:
Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).
Старт, Стандарт, Малый бизнес, Бизнес

Стандартная синхронизация загружает пользователей из Active Directory за один запрос. Большой объем данных приводит к превышению лимитов памяти или времени выполнения скрипта. Процесс прерывается, данные не обновляются.

Пошаговая синхронизация обрабатывает список пользователей частями. Она снижает нагрузку на сервер и позволяет завершить импорт без ошибок.

  Как работает режим

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

Режим доступен в модуле AD/LDAP версии 26.0.0 и выше. По умолчанию отключен. Включить режим можно только через код.

Перед настройкой на рабочем сайте проверьте синхронизацию в тестовой среде.

  Ограничения продуктов

В продукты компании 1С-Битрикс можно загрузить не всех пользователей из AD/LDAP. Учитывайте ограничения:

  • 1С-Битрикс: Управление сайтом — можно создать не более 1000 пользователей,
  • 1С-Битрикс24 — лимит зависит от тарифного плана коробочной версии.

  Включить режим

  1. Обновите модуль AD/LDAP до версии 26.0.0 или выше.
  2. В административном разделе сайта откройте страницу /bitrix/admin/php_command_line.php: Настройки > Инструменты > Командная PHP-строка.
  3. Выполните код, чтобы активировать режим и включить логирование:

    \Bitrix\Main\Loader::includeModule('ldap');
    
    // Включить запись логов синхронизации в файл
    \Bitrix\Ldap\DI\Container::getInstance()->getSettings()->enableSyncLogger(
        '/path/to/logs/ldap.log'
    );
    
    // Активировать пошаговый режим синхронизации
    \Bitrix\Ldap\DI\Container::getInstance()->getSettings()->enableModernSync();

    Замените /path/to/logs/ldap.log на путь к файлу лога на сервере. Убедитесь, что у веб-сервера есть права на запись в эту директорию.

  Запустить синхронизацию

Синхронизацию можно запустить одним из двух способов.

Способ 1. Через настройки сервера

  1. В административном разделе перейдите на страницу Настройки > AD/LDAP.
  2. Откройте настройки нужного сервера.
  3. Перейдите на вкладку Синхронизация.
  4. Установите флаг Выполнять периодическую полную синхронизацию и сохраните изменения.

Чтобы запустить синхронизацию еще раз, отключите и заново включите синхронизацию:

  1. Снимите флаг Выполнять периодическую полную синхронизацию и нажмите Сохранить.
  2. Установите флаг Выполнять периодическую полную синхронизацию и нажмите Сохранить.

В результате импорт начнется сразу.

Способ 2. Через агент синхронизации

  1. Откройте страницу /bitrix/admin/php_command_line.php: Настройки > Инструменты > Командная PHP-строка.
  2. Укажите идентификатор настроенного сервера и выполните агент синхронизации:
\Bitrix\Main\Loader::includeModule('ldap');
$serverId = 1; // идентификатор сервера
\CLdapServer::SyncAgent($serverId);

Идентификатор сервера serverId можно получить в административном разделе на странице Настройки > AD/LDAP.

  Отладить процесс и устранить ошибки

С помощью логирования можно отследить этапы работы. Процесс синхронизации проходит через состояния:

  • idle — ожидание,
  • import — импорт новых и обновление существующих пользователей,
  • deactivate — деактивация пользователей, которых нет в AD,
  • finished — завершение.

Информация о текущей сессии хранится в таблице базы данных b_ldap_sync_session. Одновременно выполняется только одна сессия синхронизации для каждого сервера.

Если процесс завис или его нужно остановить, завершите активные сессии методом killRunningSessions().

\Bitrix\Main\Loader::includeModule('ldap');
\Bitrix\Ldap\DI\Container::getInstance()->getSyncSessionManager()->killRunningSessions();

Дата и время последней синхронизации пользователя сохраняются в таблице b_ldap_user_last_sync. Эти данные помогают определить, какие записи были обработаны на последнем шаге.

  Отключить режим

Чтобы вернуться к стандартному режиму синхронизации, выполните код:

\Bitrix\Main\Loader::includeModule('ldap');

\Bitrix\Ldap\DI\Container::getInstance()->getSettings()->disableSyncLogger();
\Bitrix\Ldap\DI\Container::getInstance()->getSettings()->disableModernSync();


Была ли эта страница полезна?
Курсы разработаны в компании «1С-Битрикс»