Николай Ланец
30 нояб. 2018 г., 21:20

MODX-Клуб 2.4.5. Улучшения в управлении задачами. Поправлена почта.

Всем привет!

Вместо вступления: вполне допускаю, что кого-то может раздражать спам с сайта (уведомления о новых топиках). Если это так, пожалуйста, зайдите в настройки профиля и отключите уведомления. Как минимум в ближайшее время я буду писать много топиков, потому что очень много всего есть, что надо будет документировать. Это в том числе и для меня информационная база.

Сегодня вы могли получить сразу несколько спам-писем, это потому что помимо всего прочего я сегодня еще и почту поправил. В частности уменьшил время ожидания клиентского почтового сервера , а так же прописал DKIM (из-за чего процент доставленных писем должен значительно увеличиться).

С уменьшением времени ожидания вообще задачка интересная. Проблема была в том, что за раз, при создании нового топика, создается порядка 3000 писем. И все их надо разослать. Пока они рассылаются, если еще топик будет написан, еще 3000 писем добавится. То есть важно, чтобы письма рассылались оперативно. Но используемый сторонний компонент sendmail имеет серьезный недостаток - в нем никак не прописано время ожидания удаленного сервера. Получалось, что если сервер долго отвечает, то и запрос в ожидании долго весит, то есть очередь рассылки стопорится. Крайне неприятный момент. Вроде мелочь, а механизм уведомлений парализуется. А с учетом того, что компонент по всей видимости больше не поддерживается, пришлось его переписать. Но зато он теперь из коробки в компоненте mail-module идет.

Вторая связанная с этим задача касалась сортировки писем. Сценарий простой: кто-то создал топик (добавилось куча писем в очередь), после кто-то пришел, написал комментарий (и добавились письма с уведомлением о комментариях). Но без ранговой сортировки письма про комментарии стоят в общей очереди, хотя явно они важнее, чем просто уведомление о новом топике. Добавил ранг в почтовый модуль, теперь при создании письма можно указывать ранг, а при рассылке письма выбираются с учетом ранга от большего к меньшему. Очень удобно.

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

Особое внимание обращаю на создание связей между задачами. Идеологически было изначально запланировано так, что помимо прямых связей задач родитель-потомок, будут еще и относительные связи. Это удобно, когда схожие задачи находятся в разных проектах и имеют какое-то отношение друг к другу. К примеру, несколько конечных проектов используют один и тот же компонент, в котором обнаружилась бага. Так то багу обнаружили на конечных проектах (и в каждом из них была создана задача), но бага-то в стороннем компоненте. Поэтому в проекте компонента создается задача на устранение баги, а из других проектов создаются ссылки на задачу компонента. В дальнейшем, когда будет доработан механизм уведомлений, каждый владелец конечной задачи получит уведомление, что базовая задача в стороннем компоненте была закрыта и надо перепроверить решение на своей стороне.

И вот тут момент: связи эти можно устанавливать даже на задачи чужих проектов. Но делать это можно только через свои задачи. То есть если ваша задача зависит от чужой, то вы на своей задаче жмете входящую стрелочку. Если чужая зависит от вашей, то вы опять-таки на своей задаче жмете, только исходящую стрелочку. В любом случае, первоначальные стрелочки будут только на ваших задачах. Вот как это работает: https://youtu.be/eRTpz69k5ZE

Сейчас, конечно, все это мало кого касается, но я верю, что сторонних проектов в будущем будет много, и эффективный механизм отслеживания взаимных задач крайне необходим.

На этом пока все. Но вы не молчите. Если хоть какие-то вопросы или предложения возникают, говорите. Ведь уже можно даже к обучению переходить, но так как нет вопросов никаких, не ясно, надо это кому или нет. Пока что я делаю все то, что использую для себя. Но уже есть на чем основы разбирать.

Кстати, все это пишется не только для меня. Напомню, что сайт Клуба лежит в открытом доступе, и каждый желающий может его у себя развернуть (спроси меня как))).

Да, почта заработала, спасибо.
Правда, меня удивило что я таки зареген тут. Пытался, выбило ошибку, и в итоге забил.
По существу: для почтовиков, при объемных рассылках необходимо указывать внизу письма ссылку на "отписаться", тогда пробив почты будет больше.
Также мне кажется, что посещалка на 3к зарегеных пользователей тут не похожа. Добавить бы пиксель в письмо и проверить кто читает. Лишних удалить, иначе нагрузка на почту будет расти, а письма будут уходить в никуда. Это предложения-пожелания :)
>> Пытался, выбило ошибку, и в итоге забил.
Что именно пытались, и какую ошибку выбило?
На счет отписки, задача уже стоит, позже сделаю.
На счет пикселей: метод не надежный, ибо пользователи могут просто почту не проверять или типа того, а может просто на уровне почтовика заблокированы картинки. В общем, нельзя этот метод использовать. Но у меня есть логи (все ошибки записываются). Есть где "пользователь не найден" или "пользователь заблокирован". Да, подобные можно пройти и массово заблокировать. Но все равно, это максимум 30% от базы. По моим наблюдениям, живая база более 70%, это все-таки 7 лет собиралось. Но в любом случае, после обновления, полная рассылки проходит где-то за час-два, так что в целом нормально. Но почта в зоне i.ua доставляет проблем, там по 7 и более mx-серверов и много битых учеток, пока по 3-5 сек на каждый сервер потратит, в общей сложности на одну учетку сейчас уходит +- минута. Вот они сильно тормозят процесс.

>>Что именно пытались, и какую ошибку выбило?
Честно, не помню. Но это было еще на старой версии сайта.
Зачем отправлять письма тому, кто их не читает?) Можно в принципе сделать срез, например за неделю. Кто ни разу не открыл письмо, того можно и подчистить.
30% от 3к пользователей это как никак 900 человек.
Но бережное отношение к базе да, я понимаю:)
<< Но бережное отношение к базе да, я понимаю:)
Именно так :)
Что-то сегодня после перезагрузки сервера почта сбойнула... Но сейчас опять работает. Повторится - буду разбираться. Сейчас пока явной закономерности не увидел.
Кому-нибудь еще приходят по 2 уведомления о событии?
Артем, у тебя все события продублированы, или только какой-то частный случай замечен? Я время от времени с почтой колдую, поэтому в редких случаях, но все же могут отдельные письма задублироваться. Но вряд ли это система. И перепроверь, чтобы получатель был один и тот же. А то может у тебя две учетки?
(стыдно) только коммент написал, решил проверить получателя - так и есть 2 разных (вообще стыдно)
Бывает.
Раз почта приходит, восстанови доступ и сними галочки с уведомлений.
может тогда лучше в качестве чистки/актуализации базы удалить лишний аккаунт?
Сорри, этой функцией я заниматься не буду, просто по стратегическим соображениям. Тут обыгрываются некоторые эксперименты, о которых я более развернуто расскажу позже. Сейчас это мешает только тебе (то есть на твой акк лишние письма), соответственно решать тебе, инструменты есть - восстановить пароль и отключить уведомления. Сорри, если грубо звучит, я ничего такого не имел ввиду. Просто факт.

Добавить комментарий