Строка приёмочного листа 2.9. Две правки на пути, который ждёт человек у экрана:
предпросмотр сметы и создание рассылки.
Стоп-листы больше не читаются целиком — спрашиваем только про номера этой
рассылки, пачками по 1 000. Общий стоп-лист портала общий на всех клиентов и
растёт без предела: раньше клиент с двумя сотнями номеров тянул его в память
весь. Ответ отбора не меняется, меняется цена вопроса.
Аудитория собирается построчно и сырыми строками, без сборки 20 000 моделей —
во всех трёх источниках. Правила модели при этом сохраняются, на это поставлен
отдельный сторож: удалённая сделка в получатели не попадает (вырезанием
доказано — в обход правил она возвращается).
Третье место из плана — квадрат в джобе отправки — было вылечено ещё в задаче
про снимок получателей; своей работой не считаю.
Замеры по два прогона на сторону, на одной базе. Предпросмотр 20 000: память
сверх маленькой рассылки 37 → 18 МБ, время 0.56 → 0.25 с. Создание 20 000:
1.4 → 1.05 с — разница мала, победой не называю. Большой чужой стоп-лист
(50 000) при 200 своих номерах: +27 → +4 МБ.
Тесты: 4 новых (три на объём, один сторож). Меряют разницей «маленькая
рассылка → большая», а не абсолютом: цена самого запроса так вычитается.
ClientSms 162/162 два прогона подряд, приём лидов 17/17, phpstan 0.
Живой прогон: 20 000 контактов в локальной базе. Предпросмотр 0.8 с, создание
кнопкой 1.9 с, снимок 20 000 из 20 000. Обе рассылки очередь отправила целиком
(40 000 сообщений, ≈148 в секунду в песочнице); во время отправки портал
открывался как обычно — список рассылок 0.5 с, сделки 0.6 с.
Скорость самой отправки не улучшалась — это очередь, а не экран.