Вместо вступления: вполне допускаю, что кого-то может раздражать спам с сайта (уведомления о новых топиках). Если это так, пожалуйста, зайдите в настройки профиля и отключите уведомления. Как минимум в ближайшее время я буду писать много топиков, потому что очень много всего есть, что надо будет документировать. Это в том числе и для меня информационная база.
С уменьшением времени ожидания вообще задачка интересная. Проблема была в том, что за раз, при создании нового топика, создается порядка 3000 писем. И все их надо разослать. Пока они рассылаются, если еще топик будет написан, еще 3000 писем добавится. То есть важно, чтобы письма рассылались оперативно. Но используемый сторонний компонент sendmail имеет серьезный недостаток - в нем никак не прописано время ожидания удаленного сервера. Получалось, что если сервер долго отвечает, то и запрос в ожидании долго весит, то есть очередь рассылки стопорится. Крайне неприятный момент. Вроде мелочь, а механизм уведомлений парализуется. А с учетом того, что компонент по всей видимости больше не поддерживается, пришлось его переписать. Но зато он теперь из коробки в компоненте mail-module идет. Вторая связанная с этим задача касалась сортировки писем. Сценарий простой: кто-то создал топик (добавилось куча писем в очередь), после кто-то пришел, написал комментарий (и добавились письма с уведомлением о комментариях). Но без ранговой сортировки письма про комментарии стоят в общей очереди, хотя явно они важнее, чем просто уведомление о новом топике. Добавил ранг в почтовый модуль, теперь при создании письма можно указывать ранг, а при рассылке письма выбираются с учетом ранга от большего к меньшему. Очень удобно. Особое внимание обращаю на создание связей между задачами. Идеологически было изначально запланировано так, что помимо прямых связей задач родитель-потомок, будут еще и относительные связи. Это удобно, когда схожие задачи находятся в разных проектах и имеют какое-то отношение друг к другу. К примеру, несколько конечных проектов используют один и тот же компонент, в котором обнаружилась бага. Так то багу обнаружили на конечных проектах (и в каждом из них была создана задача), но бага-то в стороннем компоненте. Поэтому в проекте компонента создается задача на устранение баги, а из других проектов создаются ссылки на задачу компонента. В дальнейшем, когда будет доработан механизм уведомлений, каждый владелец конечной задачи получит уведомление, что базовая задача в стороннем компоненте была закрыта и надо перепроверить решение на своей стороне.
И вот тут момент: связи эти можно устанавливать даже на задачи чужих проектов. Но делать это можно только через свои задачи. То есть если ваша задача зависит от чужой, то вы на своей задаче жмете входящую стрелочку. Если чужая зависит от вашей, то вы опять-таки на своей задаче жмете, только исходящую стрелочку. В любом случае, первоначальные стрелочки будут только на ваших задачах. Вот как это работает: https://youtu.be/eRTpz69k5ZE Сейчас, конечно, все это мало кого касается, но я верю, что сторонних проектов в будущем будет много, и эффективный механизм отслеживания взаимных задач крайне необходим.
На этом пока все. Но вы не молчите. Если хоть какие-то вопросы или предложения возникают, говорите. Ведь уже можно даже к обучению переходить, но так как нет вопросов никаких, не ясно, надо это кому или нет. Пока что я делаю все то, что использую для себя. Но уже есть на чем основы разбирать.
Кстати, все это пишется не только для меня. Напомню, что сайт Клуба лежит в открытом доступе, и каждый желающий может его у себя развернуть (спроси меня как))).