main · Главный модуль 26.650.0 Заметное

main 26.650.0: сброс счётчиков ленты пачкой и превью своих ссылок без похода наружу

3 мин чтения

Два изменения в ядре, оба — про лишнюю работу, которую система делала на ровном месте. Счётчики живой ленты научились сбрасываться одним вызовом вместо цикла, а превью ссылок перестало ходить HTTP-запросом на собственный портал. Ломающих удалений нет: все правки сигнатур — добавление аргументов с дефолтами.

Счётчики ленты: один вызов вместо N

Появился CAllUserCounter::clearLiveFeedCodes():

        \CUserCounter::clearLiveFeedCodes(
    $userId,
    ['**', 'livefeed'],   // коды счётчиков
    SITE_ID,
    sendPull: true,
    cleanCache: true,
);

    

Зачем — понятно из соседнего модуля в том же батче. В im 26.800.0 приехали LiveFeedReadAllHandler и событие onSpaceLiveFeedReadAll: сценарий «прочитать всё» в ленте. Раньше он означал обход кодов по одному, и на каждый код — свой pull-event и своя инвалидация кэша. Пользователь жал одну кнопку, портал получал пачку пушей. Теперь коды гасятся списком, а pull уходит один.

Рядом — SendPullEvent() с новым аргументом $ensureZeroForGroupedCode = false. Это про застревающие счётчики: когда сгруппированный код обнуляется, клиенту нужно явно отправить ноль, иначе UI останется с висящей цифрой, которую нечем сбить.

UrlPreview: свой домен больше не дёргаем снаружи

Новый protected-метод UrlPreview::isOwnDomain(Uri $uri) сравнивает хост ссылки с SITE_SERVER_NAME и опцией main.server_name. Если хост свой и Router::dispatch() узнаёт URL — превью помечается как TYPE_DYNAMIC и строится без внешнего запроса.

До этого портал, встретив в сообщении ссылку на самого себя, честно шёл за ней HTTP-клиентом. В худшем случае — на закрытом контуре, за прокси или при кривом DNS — этот запрос просто не проходил, и превью внутренних страниц не работало вовсе. Заодно на один исходящий запрос по пользовательской ссылке меньше — обычная SSRF-гигиена.

API миграций: два новых параметра

Ядро продолжает докручивать UpdateSystem\Migration (модули на него как раз массово переезжают в этом же батче):

  • Migration\Event::register() / registerCompatible()?int $sort = null, порядок вызова обработчика. Раньше сортировку в миграции задать было нечем, всегда получалось 100.
  • Migration\Stepper::add() / addIfModuleExists() / addIfModuleInstalled()?int $execDelay = null, задержка первого запуска.

С execDelay есть неочевидная деталь, которую видно только в коде: внутри стоит max($delay, $execDelay ?? 0), где $delay — среда исполнения (60 секунд по умолчанию, 600 в облаке, 900 при установке дистрибутива). То есть execDelay умеет только отодвинуть запуск, но не приблизить. Указать 10 секунд и получить старт через 10 не выйдет — параметр про «этот степпер тяжёлый, пусть подождёт подольше».

Что делать

  • Если у вас есть свой сценарий массового прочтения ленты — перепишите цикл на clearLiveFeedCodes().
  • Если наследуете Event::register, Stepper::add или SendPullEvent — допишите новые параметры в сигнатуру наследника, иначе PHP 8 выдаст предупреждение о несовместимости.
  • Обычные вызовы этих методов трогать не нужно: все аргументы опциональные.

Читайте дальше

main 26.700.0 Заметное Свежее

Main 26.700.0: в ядре появились фича-флаги

Битрикс выкатил main 26.700.0 — и это тот редкий случай, когда в ядре появляется целая новая подсистема: фича-флаги `Bitrix\Main\Config\Feature` с двумя таблицами в БД. Плюс несколько тихих поведенческих изменений, которые стоит проверить, если у вас не-UTF-8 сайт, кастомные фильтры пользователей ил...

4 мин
location 26.300.0 Заметное Свежее

Location 26.300.0: батчевый обратный геокодинг — до 20 координат за один вызов

Релиз от 17 июня 2026 с одной, но цельной темой: в модуль `location` завезли батчевый обратный геокодинг — метод `findByCoordsList`, который превращает список координат в список локаций за один вызов сервиса. Если вы строите интеграции с картами или доставкой и до сих пор дёргали `findByCoords` в ци...

2 мин
security 26.200.0 Безопасность Свежее

Security 26.200.0 не ставится на маке и Windows: фатал «Cannot redeclare class» прямо в апдейтере

Обновление security 26.200.0 у нас не установилось вообще: апдейтер умирает с фаталом посреди своего скрипта. Если ваш прод на Linux — выдыхайте, вас это не касается. А вот если вы ставите обновления в локальной разработке на macOS или Windows (Docker с bind-mount проектной папки — это ровно тот слу...

4 мин
mail 26.900.0 Заметное Свежее

Mail 26.900.0: общие подписи ломают старый API, а тяжёлые вложения переезжают на Диск

Модуль mail получил один из самых жирных релизов за последнее время: 523 файла, +39 182/−3 131 строк. Внутри — три большие фичи (общие подписи, автоперенос тяжёлых вложений на Диск, избранное с AI-классификацией писем), переработанный IMAP-синк истории и три новые таблицы в БД. Если вы кастомизирова...

4 мин
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…
Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти