P.P.S. И судя по Вашей реакции, Вы, в своем варианте №2, предполагали, как раз вариант рассмотренный Mols'ом - т.е. хранить запись о конкретном действии (послать извещение исполнителю А)флоппик
я предлагаю хранить записи о том, кто должен проверить необходимость произведения каких либо действий по достижению определенного периода времени.
т.е. если задача будет перераспределена через 23 часа 59 минут, то ещё через минуту новому исполнителю придёт уведомление. верно? о том, что он слишком долго держит тикет???Если notifyUser должен известить "текущего" ответственного, то абсолютно фиолетово сколько раз вы этого ответственного исполнителя А будете менять на Б,В и т.д.
Уйдет тому, кто будет ответственным на момент отправки.
falseP.P.S. И судя по Вашей реакции, Вы, в своем варианте №2, предполагали, как раз вариант рассмотренный Mols'ом - т.е. хранить запись о конкретном действии (послать извещение исполнителю А)
Он вообще не имеет придуманных Вами проблем.zerkms
т.е. если задача будет перераспределена через 23 часа 59 минут, то ещё через минуту новому исполнителю придёт уведомление. верно? о том, что он слишком долго держит тикет???
если это так, то вариант флопика не имеет проблем, описанных Mols, а имеет куда более серьёзные концептуальные проблемы.
Врать не надо. Ваша же цитата.zerkms
false
флоппик не предлагал вешать события об уведомлении А. Поэтому это Ваши личные домыслы о том, как Вы бы решили этот вопрос.zerkms
создали тикет. распределили на исполнителя А. повешались события об уведомлении А через 1 день.
потом перераспределили на Б.
повторяю ещё раз, для тех кто в танке: текущая реализация флопика не в состоянии избавиться от этой проблемы без доработки. ты слишком много говоришь абстрактными вещами.Зато у Вас имеются проблемы с пониманием того, что Вы хотите получить.
notifyUser это нереализованный метод в который Вы можете заложить ровно ту логику, которая Вас устраивает.
В назначенное время, он будет вызван, проверит нужно ли отправлять извещение текущему пользователю
- если нужно отправит.
- если не нужно, то он может сам себя переназначить на новое расчетное время.
вот цитата флоппика, свидетельствующая о том, что для каждого задания в базе будет запись с временем запуска.по достижению created_at + period дергаем callable_method у callable_object c параметрами callable_method_params где он что-то делает, и в итоге сообщает, нужно ли ему повторно дернуть себя через period либо очистить задание.
флоппик не предлагал вешать события об уведомлении А.
это тогда что? это уведомление кого?.$ed::registerEvent('Ticket','notifyUser', $ticket_id, '1 day');
цитата моя. умозаключения из цитаты твои. неверные.Врать не надо. Ваша же цитата.
Охренеть. А это ни о чем не говоритzerkms
текущая реализация флопика не в состоянии избавиться от этой проблемы без доработки
Равно как и пропущенная реализация метода noticeUser?флоппик
Псевдокот, ага:
Кто из нас двоих знает детали проектируемой системы?zerkms
откуда этот метод получит информацию. давайте без воды и без абстракции.
сработает код по проверке нужно ли отправлять уведомление по тикету $ticked_id.zerkms
5 апреля в 12:00: согласно заданию работает код по отправке уведомления пользователю Б
Это уведомление того, кого Вы захотите.это тогда что? это уведомление кого?.
Все я не могу. И что что оно будет?zerkms
вот цитата флоппика, свидетельствующая о том, что для каждого задания в базе будет запись с временем запуска.
флоппик
где он что-то делает, и в итоге сообщает, нужно ли ему повторно дернуть себя через period либо очистить задание.
Еще раз, на всякий случай, повторю -Fortop
В назначенное время, он будет вызван, проверит нужно ли отправлять извещение текущему пользователю
- если нужно отправит.
- если не нужно, то он может сам себя переназначить на новое расчетное время.
я ничего не дёргаю. задача с первой страницы не изменялась.Кто из нас двоих знает детали проектируемой системы?
Вы как тот волшебный клиент, постоянно достаете что-то новое из рукава, пытаясь оказаться правым.
флопик выдал решение. его - я оцениваю. оно подвержено озвученной Mols'ом проблеме. если ты проблему не видишь - могу посоветовать только очки.Где она(информация) у Вас лежит оттуда он ее и получит и это(получение информации) в методе заложите Вы собственными руками.
да. и по данному тикету будет отправлено письмо. через 1 минуту после назначения тикета НОВОМУ исполнителю о том, что он его СЛИШКОМ ДОЛГО ДЕЛАЕТ. epic fail.Это запись не с временем отправки письма, а запись с временем запуска проверки, нужно ли по данному тикету отправить письмо!!!!!!!
правильно. а коду неоткуда брать информацию о том, когда было произведено переназначение исполнителя - поэтому уведомление, естественно, будет отправлено.сработает код по проверке нужно ли отправлять уведомление по тикету $ticked_id.
И если отправлять не нужно, то этот код может назначит выполнение себя же - на другое время.
Если отправлять нужно - то он вызовет отправку уведомления.
тебе пасовать нужно было ещё вчера, тогда не было бы 3 страниц твоей тупи здесь. воды вроде "всё окей", "шедулер-медулер-аудитор" я и сам могу налить - мама не горюй, вот только вода эта к решению задачи не приблизит ни на шаг.Поэтому если Вы и теперь не поняли - я пас.
Почему? Почему автор кода не может поставить проверку о том, сколько времени прошло с момента назначения тикета текущему пользователю?zerkms
и по данному тикету будет отправлено письмо. через 1 минуту после назначения тикета НОВОМУ исполнителю о том, что он его СЛИШКОМ ДОЛГО ДЕЛАЕТ. epic fail.
Ах, коду неоткуда брать? А Вы значит тут вообще просто так - мимо проходили и не смогли додуматься хранить время назначения тикета конкретному пользователю? Невероятно.zerkms
а коду неоткуда брать информацию
Реальный epic fail!Fortop
есть таблица связей пользователь-тикет с временем назначения.
ещё одно поле добавлять? т.е. для каждого чиха нужно это предусмотреть?Почему? Почему автор кода не может поставить проверку о том, сколько времени прошло с момента назначения тикета текущему пользователю?
автору много чего хватает. вы позволили указать на недочёт в моей реализации, при том что ваше предложение без доработки - также факапится в тех же условиях.Чего не хватает автору чтобы сделать эту простую вещь?
такого хрена - что вы профессиональному разработчику позволили заявить, что его реализация фейлится, а ваша нет. хотя это ложь - и ваше решение нужно ещё дорабатывать и дорабатывать.Какого хрена, я со своим копеечным опытом в php должен пытаться объяснить эту тривиальщину профессиональному (?) разработчику?
именно поэтому на первой странице (надеваем очки и отматываемся назад) я показал конкретную схему. если вы считали, что в ней чего-то не хватает - тогда нужно было указать на это.Ах, коду неоткуда брать? А Вы значит тут вообще просто так - мимо проходили и не смогли додуматься хранить время назначения тикета конкретному пользователю? Невероятно.
она не "есть", она волшебно появилась, чтобы притянуть решение за уши.есть таблица связей пользователь-тикет с временем назначения.
Я уже ничего не предлагаю.dr-sm
то он предлагает сначала второй вариант делать
симплисити чего? алгоритмы там будут сложнее.меджык симплисити рулит что-то в последнее время.
я привел конкретную схему базы, я достаточно подробно сформулировал требования, я достаточно подробно описывал use case'ы своих решений.У zerkms есть свои сферические кони, особенности которых знает только он.
чем это отличается от ВашегоFortop
правильнее 1й вариант, только задача это не "отправка письма пользователю если его долго не было" - а запуск аудитора который проверяет "как давно был пользователь"
?скрипт check_overhead_in_tickets.php, который, в соответствии с данными из базы, находит тикеты с превышением времени и т.д.
НичемАвтор оригинала: Fortop
чем это отличается от Вашего?
При том, что в предложенном варианте ed::registerEvent('Ticket','notifyBoss', $ticket_id, '2 day'); недостаточно информации не только для формирования письма, но и для принятия решения о том, кому надо отправлять. Следовательно в таблицу тикетов добавится лишнее поле для отслеживания времени, когда на исполнителя был повешен тикет. Шаманство с реинициализацией заключается в ней самой, т.к. данных по которым принято решение реинициализироваться в чистом виде нет. Точнее не обязательно есть, т.к. могут быть уже затерты. Тут уж unit-тесты и info-записи в лог, а ля "я это сделал потому что...".Автор оригинала: Fortop
Причем тут стандартизация callback по параметрам. И в чем заключается шаманство с реинициализацией - я не понимаю.
В том, что решение принимается в момент когда на руках есть все данные. Соответственно поля в базе не плодятся. В том, что сам скрипт рассылающий уведомления туп до безобразия.Автор оригинала: Fortop
В чем интересность варианта 2, когда надо втупую писать лишние события, чтобы их потом удалить (например, при смене исполнителя, при логине пользователя и т.д.) - я не понимаю.
Все правильно. Это очевидно, и на мой взгляд, достаточно логично. Поскольку требуемую информацию, насколько я понял, callback достанет сам, согласно своей логики.korchasa
недостаточно информации не только для формирования письма, но и для принятия решения о том, кому надо отправлять.
Абсолютно не следовательно, что лишнее. Это не гостевая.korchasa
Следовательно в таблицу тикетов добавится лишнее поле для отслеживания времени, когда на исполнителя был повешен тикет
Не менее туп, чем в альтернативном варианте.korchasa
В том, что сам скрипт рассылающий уведомления туп до безобразия.
вот не надо только в кучу мешать. я трижды повторил, что задача существует в рамках озвученной схемы БД. то, что существует помимо тех таблиц - вас волновать не должно. если данных не хватает - то нужно сразу было сказать, каких. а не доказывать с пеной у рта, что решение "подходит", при этом подразумевая ещё ворох служебных таблиц которые "как бы уже и так должны существовать".У меня собственно всю тему и мысли не возникло, что кто-то настолько неопытен, что не только не фиксирует такие вещи, как историю переназначения тикетов и даты этих операций, но даже и не подозревает о том, что это нужно делать.