|
|
|
Помогите! Сервис напоминания...
|
|||
|---|---|---|---|
|
#18+
Привет всем! Подкиньте пожалуйста идею как правильно реализовать задачу. И так, надо сделать что бы при наступлении некоторого события появлялось уведомление. Например поздравление людей с праздниками, днями рождения, напоминание что им необходимо купить расходники или совершить другие действия. Если с ежегодными событиями нет никаких сложностей, то например, что делать с событиями которые должны происходить каждые 2 месяца или например 8 месяцев или каждые 50 дней абсолютно не понятно. У меня есть дата первого события и периодичность. Т.Е. на выходе должна быть таблица событий которые случаться сегодня. Пытаюсь сейчас все это сделать при помощи MySQL, но моих знаний не хватает. Если кто-то решал подобную задачу ткните куда копать. Заранее спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 15:02:53 |
|
||
|
Помогите! Сервис напоминания...
|
|||
|---|---|---|---|
|
#18+
При столь общих формулировках непонятно причем тут MySQL. Во-первых, определитесь с типами событий, который нужно обрабатывать. Пришедший по сети UDP-пакет или изменение логического сигнала на COM-порту - это тоже события. Если речь о календарных событиях, т.е. о наступлении определенного даты-времени, то изучите формат файла crontab. Даже если сам cron вам не подойдет (это тоже еще нужно обосновать), то по крайней мере, получите хорошие варианты для способов хранения расписания календарных событий. P.S. "Появилось уведомление" - это тоже не к MySQL, т.к. он ни имеет никаких визуальных средств, через которые можно было бы вывести уведомления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 15:13:29 |
|
||
|
Помогите! Сервис напоминания...
|
|||
|---|---|---|---|
|
#18+
А в чем сложность? У вас допустим есть таблица с 2 полями: 1. Начало события 2. Периодичность. 3. id уведомления В своем приложении делаете отдельный поток который с периодичностью N ( например 1 раз в минуту, все зависит от задачи) обходит таблицу, и если mod((now() - поле1), поле2) < N , то выводим уведомление, связанное через поле3. как то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 15:25:25 |
|
||
|
Помогите! Сервис напоминания...
|
|||
|---|---|---|---|
|
#18+
miksoft, наверное коряво объяснил... Как пример событие которое происходит каждые пять месяцев... Например человеку необходимо каждые пять месяцев покупать какой-нибудь расходник. Купил он этот расходник первый раз 01.01.2014, второй 01.06.2014, третий 01.11.2014, четвертый 01.04.2015, 01.09.2015, 01.02.2015 и.т.д. Если сегодня 01.02.2015 и в базе храниться начальная дата 01.01.2014 и интервал 5 месяцев как вычислить что это событие должно произойти сегодня? Естественно средствами Mysql. В итоге этих событий будут тысячи, а то и десятки тысяч. Так что на выходе мне надо получить таблицу этих событий, визуализацией и обработкой этих данных уже займется движок... Если провести аналогию с cron то вопрос звучит примерно так: как получить список заданий которые необходимо выполнить сейчас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 15:31:36 |
|
||
|
Помогите! Сервис напоминания...
|
|||
|---|---|---|---|
|
#18+
kixiro, mod((now() - поле1), поле2) < N что такое N в этой конструкции? поясните пожалуйста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 15:38:03 |
|
||
|
Помогите! Сервис напоминания...
|
|||
|---|---|---|---|
|
#18+
kixiroА в чем сложность? У вас допустим есть таблица с 2 полями: 1. Начало события 2. Периодичность. 3. id уведомления В своем приложении делаете отдельный поток который с периодичностью N ( например 1 раз в минуту, все зависит от задачи) обходит таблицу, и если mod((now() - поле1), поле2) < N , то выводим уведомление, связанное через поле3. как то так. можно в принципе подробнее про mod((now() - поле1), поле2) < N что считает, что получается на выходе, в каком формате тут фигурирует поле2? я пытался делать что-то подобное но я записывал начальную дать в формате timestamp в поле int (количество секунд) преобразовывал текущую в секунды и период в секунды, и пытался выяснить остаток от целочисленного деления, но из-за високосных годов ровным счетом ничего не получилось так как в году помоему 365,24 дня в среднем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2014, 16:02:04 |
|
||
|
Помогите! Сервис напоминания...
|
|||
|---|---|---|---|
|
#18+
N - это время периодичности проверки правила(в той же размерности, что и поля, если unix_timestamp - то это секунды). Если проверять например каждую минуту, то N = 60 и результат должен быть в рамках 0 до 60, если больше, то вышли за период. Пример: mysql> create table events ( start_dat datetime, interval_dat int(10), id int(10)); Query OK, 0 rows affected (0.08 sec) mysql> insert into events values ('2014-07-01 00:02:00', 5*24*60*60, 1); Query OK, 1 row affected (0.05 sec) т.е. начало 2014-07-01 в 2 часа, интервал 5 дней: Код: sql 1. 2. 3. 4. 5. 6. 7. в момент например 2014-07-06 00:( 01:59 | 02:59 | 03:59 ) будет подходить к периоду попадания: Код: sql 1. 2. 3. 4. 5. 6. 7. Код: sql 1. 2. 3. 4. 5. 6. 7. Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2014, 02:54:00 |
|
||
|
|

start [/forum/topic.php?fid=47&tid=1834451]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 406ms |

| 0 / 0 |
