main · 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 выдаст предупреждение о несовместимости.
  • Обычные вызовы этих методов трогать не нужно: все аргументы опциональные.

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

calendar 25.195.0 Заметное Свежее

calendar 25.195.0: активность БП считает минуты встреч и перестала терять последний день

Точечный релиз вокруг одной активности бизнес-процессов — «Получить информацию из календаря». Она научилась отдавать списки заголовков и суммарные минуты встреч, а заодно у неё поправили границу выборки. Публичного PHP API релиз не меняет.

3 мин
calendar 25.197.0 Заметное Свежее

calendar 25.197.0: тип события call_sync и чат, который создаётся сам

У события календаря появился собственный тип, и первый его пользователь — синхронизированные созвоны: при создании такого события автоматически поднимается чат с гостевой ссылкой. Ломающих изменений нет, все правки сигнатур совместимы.

3 мин
bizprocdesigner 26.500.0 Заметное Свежее

bizprocdesigner 26.500.0: фильтр ноды приехал выключенным

Крупный UI-релиз редактора схем плюс новый тип конструкции — фильтр ноды. Ломающих изменений нет: все правки контроллера и DTO совместимы со старыми вызовами. Главное, что стоит знать заранее: фича спрятана за опцией и по умолчанию выключена.

3 мин
calendar 25.200.0 Ломающее Свежее

calendar 25.200.0: таймзона пользователя переехала в b_user.TIME_ZONE — и это ломающий релиз

Самый «ломающий» календарный релиз батча. Часовой пояс пользователя перестал быть настройкой календаря и стал полем пользователя, из-за чего у AJAX-экшена сохранения настроек изменилась сигнатура. Плюс вырезаны два метода `SynchronizationFeature`. Обновление стоит смотреть внимательно, если вы что-т...

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

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

на связи

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

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

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

Войти