Система периодических событий на сайте (планировщик, крон, cron)
Планировщик по периоду в секундах
В системе можно задавать периодические события через хранимые процедуры.
Каждую минуту вызывается процедура falcon_nt_sync_start (вызывается каждые N секунд по внутреннему cron механизму).
Она вызывает следующие процедуры:
- falcon_nt_sync_min
- falcon_nt_sync_hour
- falcon_nt_sync_day
- falcon_nt_sync_week
- falcon_nt_sync_month
Меняя код этих процедур можно выполнять необходимые проверки по базе и вызывать свои процедуры (например уведомления пользователей).
Примечание: Для вызова используется внутренний крон, который настраивается в App Settings в web.config (или в Core версии в appsettings.json).
Cron.Key - некий ключ, который затем проверяется в процедуре falcon_nt_sync_start (позволяет избежать случайных запусков процедуры).
Cron:PeriodSeconds - период в секундах между запусками, по умолчанию 60 секунд.
По умолчанию процедуры пишут в trace событие вызова процедуры.
Пример процедуры start:
ALTER PROCEDURE [dbo].[falcon_nt_sync_start]
@key nvarchar(32)
AS
BEGIN
-- key from config settings
if(@key<>'KEY') begin
select 'Error' Msg, 0 Result
return
end
declare @sec int = DATEPART(SECOND, getdate()), @min int = DATEPART(MINUTE, getdate())
declare @mins int,
@isNextMin bit = 0,
@curDateMins int = DATEPART(MINUTE, getdate()) + 60 * DATEPART(HOUR, getdate()) + 24* 60 + DATEPART(DAY, getdate())
declare @temp int
select @temp = mins from as_nt_sync where id = 1
if(@temp = @curDateMins ) begin
set @mins = @temp
end else begin
update as_nt_sync
set mins = @curDateMins
where id = 1
select @mins = mins from as_nt_sync
where id = 1
set @isNextMin = 1
end
exec as_print @str = @mins
-- SELECT 1
select @mins Result, 'ok' Msg
-- SELECT 2-10 Вызов внешнего действия (они могут быть сделаны во внутр процедурах)
/*
select 'email' type, -- email, sms, notification, clearcache
'ru@rudensoft.ru' [to], 'sub1' subject, 'bodyXXX'+@itemIDs body, ---EMAIL
'Text 1' msg, '723429234' [number], --- SMS
'' prefix, --CLEAR CACHE
'text1' text , 'ru@rudensoft.ru' [to], 'ticketExecutor' typeCode, 'http///' url, 'add111' additional -- notification
*/
if(@isNextMin = 1) begin
exec [falcon_nt_sync_min]
end
if(@mins %60 = 0)begin
exec [falcon_nt_sync_hour]
end
if(@mins %(60 *24) = 0)begin
exec [falcon_nt_sync_day]
end
if(@mins %(60 *24 * 7) = 0)begin
exec [falcon_nt_sync_week]
end
if(@mins %(60 *24 * 30) = 0)begin
exec [falcon_nt_sync_month]
end
END
falcon_nt_sync_start возвращает следующие результаты:
- SELECT 1 - Msg, Result
- SELECT 2-10 - вызовы внешних действий (почта, смс, уведомление и т.д.). См. вызов внешних действий. Эти SELECT могут вызываться где-то внутри периодических процедур (min, hour и т.д.). И важно - эти процедуры не должны возвращать в общий поток вывода ничего кроме подобных запросов!
ВАЖНО. Необходимо обеспечить, чтобы пул IIS никогда не отключался.
Для этого используем настройки пула (IIS Manager, пул, Advanced Settings):
- In General section, at Start Mode, Select AlwaysRunning (IIS 8.5) or true for (IIS 7.5, 8)
- In Process Model Section-> Idle Timeout(minutes) set to 0 (meaning: No Idel timeout)
- In Recycling section -> Regular time Interval set to 0 (meaning: no recycling)
Планировщик по точному времени
Вы можете задать в web.config параметр Cron:Schedules, например,
<add key="Cron:Schedules" value="0 0 8 ? * MON-FRI *||0 1 19 ? * MON-FRI *||0 0/1 * * * ?"></add>
Правила перечислены через ||. Описание формата указания временных триггеров - https://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontriggers.html#example-cron-expressions
На русском описание формата - https://russianblogs.com/article/1098294979/
Генератор выражений - https://ru.rakko.tools/tools/88/
Это позволит вызывать хранимую процедуру [falcon_nt_sync_schedule] в определенные моменты.
Вид процедуры:
CREATE OR ALTER PROCEDURE [dbo].[falcon_nt_sync_schedule]
@key nvarchar(32)
AS
BEGIN
-- SELECT 1
select 1 Result, '' msg
-- SELECT 2 - 10 - Outer actions
execute as_print 'test'
print getdate()
END
Google поиск по нашей документации
- Руководства
- Основа Falcon Space Из чего состоит веб-платформа Falcon Space Настройки системы Работа со страницами Создание структуры БД - создание таблиц БД и связей между ними Описание кабинета для администрации сайта (роль editor) Описание интерфейса администратора-разработчика веб-платформы Внешние действия (уведомления, пуш, email, вызов API) Управление ролями и пользователями на сайте Система периодических событий на сайте (планировщик, крон, cron) Универсальный поиск по личному кабинету на сайте Falcon Space. Словарь терминов Соглашения по SQL коду в платформе
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта