![]() |
|
|
![]()
|
|
| AXS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 26.9.2008 Где: РК Репутация: нет Всего: -1 |
Снова нужен совет коллективного разума...
Требуется реализовать повторяющиеся события. Параметры событий в БД в формате 'startdate';'starttime';'alarmcount';'realarm';'enddate';'endtime';'actual'; 'startdate' - дата начала события 'starttime' - время начала события 'alarmcount' - количество повторений события (если 0 то до enddate/endtime) 'realarm' - промежуток времени через который повторять событие 'enddate' - дата конца события 'endtime' - время конца события 'actual' - актуальность события (по умолчанию = 1; по достижении alarmcount или enddate/endtime становится = 0) Для начала, что очевидно: SELECT * FROM `table` WHERE actual = 1; А дальше ступор... Кто знаком с аналогичными задачами - надеюсь на содействие. PS: Пока сам покумекаю... (когда опишешь задачу другим, сам её лучше понимаешь --------------------
<><><> AXS - Live Organizer v1.0 <><><> 0_o |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Если я правильно понял задачу, то сделай у задачи ещё дополнительный параметр - last_execution_time, который изначально равен 0. Потом, после SELECT, ты получаешь список задач, проходишь по нему, и для всех, у которых last_execution_time + realarm < текущего времени, их выполнять и обновлять для них last_execution_time. Понятно, ещё надо выкидывать те задачи, у которых end_time < текущего времени или по alarmcount задачу надо останавливать.
|
|||
|
||||
| AXS |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 26.9.2008 Где: РК Репутация: нет Всего: -1 |
Сейчас проекта под рукой нет (вечером дома буду проверять), но если мы правильно поняли друг друга, надо: 1) Пары 'startdate' 'starttime' и 'enddate' 'endtime' заменить на вещественные поля (их суммы) оставив 'starttime' и 'endtime' 2) Добавить 'lastextime' - время (таймштамп точнее) последнего выполнения 3) Добавить 'alarmexcounted' - количество уже отработавших событий И код по таймеру примерно такой:
PS: Код тупо написан в Notepad++ поэтому не обязательно рабочий ;) PPS: Я полагаю этот код, хоть и должен работать, но всё же нуждается в оптимизации.... Посему не помечаю пока тему как решённую... Это сообщение отредактировал(а) AXS - 3.4.2010, 11:39 --------------------
<><><> AXS - Live Organizer v1.0 <><><> 0_o |
||||
|
|||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
Ну да, это я и имел в виду.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |