Fortop
Новичок
Как не подразумевает?что такое "смотрим есть задача"? вариант 1 не подразумевает никаких задач в базе.
Вот же она
zerkms
дёргается приложение, которое находит пользователя, который был неактивен более месяца.
Как не подразумевает?что такое "смотрим есть задача"? вариант 1 не подразумевает никаких задач в базе.
zerkms
дёргается приложение, которое находит пользователя, который был неактивен более месяца.
Он возмущался засорением задач теми событиями которые не будут выполнятся.но при этом ты же сам и возмущался:
и пусть логгирование с обсуждаемым процессом не имеет ничего общего, т.к. проводиться оно должно на другом уровне детализации.если делается crm, то в любом случае придётся вводить логирование
да какая разницаа сложные запросы - хм, но это же не хайлод, где выборки только по ключу делать можно
мде. наверное я не умею объяснять.Он возмущался засорением задач теми событиями которые не будут выполнятся.
Если задача попала в список - она выполнится 100%. В противном случае ей не место в списке, а там должно находиться что-то другое.
есть issue tracker. нужно: в случае, если ticket висит на исполнителе больше недели:
- отправить исполнителю уведомление
- отправить начальнику исполнителя уведомление
подобные действия выполнять раз в неделю
аналогично:
если ticket висит на начальнике больше суток - напомнить ему, что нужно тикет кому-то назначить. повторять раз в сутки.
Не, мы ориентируемся на состояния объектов.zerkms
факты выполнения заданий, на которые мы ориентируемся.
потому я и предложил выше reset.Я очень смутно понимаю варианты
а как узнать, когда была последняя отправка - ведь нужно отправить "через неделю после последнего уведомления" (что == раз в неделю)2. раз в сутки для исполнителя.
Если это настолько критично, можно увеличить частоту запуска с1 раза в сутки, то 2-3-4.zerkms
потому как при шедуле в раз в сутки ты не сможешь отправить сообщение "через сутки". пессимистичный вариант: "через сутки, 23 часа 59минут и 59 секунд"
там было небольшое дополнениеzerkms
а как узнать,
Для особо сложных случаев это будет 3й/4й и т.д. таск (аудитор)zerkms
ведь нужно отправить "через неделю после последнего уведомления"
Fortop
отдельный storage (индивидуальный для каждого таска)
мде. и получается решение алгоритмически сложнее второго в разы и при этом во столько же менее точное - в сравнении с моим "вариантом №2" из ТС-поста.Для особо сложных случаев это будет 3й/4й и т.д. таск (аудитор)
Который будет работать с теми самыми
это может быть вообще файл, а не таблица.zerkms
т.е. теперь у нас появляется дополнительная таблица (??) со структурой:
entity_id | entity_type | event_type | last_invoked_time
по файлу искать значительно сложнее, чем по таблице.это может быть вообще файл, а не таблица.
Необязательно стараться все нормализовать до предела.
это если закладываться на меганагрузку с десятками тысяч пользователей и миллионами тикетов.zerkms
по файлу искать значительно сложнее, чем по таблице.
class Ticket {
function __construct (EventDispatcher $ed) {
$ed::registerEvent('Ticket','notifyBoss', $ticket_id, '2 day');
$ed::registerEvent('Ticket','notifyUser', $ticket_id, '1 day');
}
function notifyBoss($ticket_id) {
if (ticket_open($ticket_id)) {
mail ('[email protected]', 'ticket '.$ticket_id.' expired!');
return true;
} else {
return false;
}
}
}
$ticket = new Ticket();
как способ хранения служебной инфы влияет на способ решения поставленной исходной задачи?это если закладываться на меганагрузку с десятками тысяч пользователей и миллионами тикетов.
В большинстве случаев будет ну 100, ну 500 записей на такой файлик.
А собственные комментарии читать сложно?zerkms
как способ хранения служебной инфы влияет на способ решения поставленной исходной задачи?
zerkms
по файлу искать значительно сложнее, чем по таблице.
Если посмотреть внимательно, то в решении №2 речь идет о событиях - отправить извещение "мы о тебе соскучились". У флоппика речь идет об обработчиках этих событий.флоппик
т.е. ты повторил моё "решение №2" из стартового поста?