Система периодических событий на сайте

В системе можно задавать периодические события через хранимые процедуры. 

Каждую минуту вызывается процедура as_nt_sync_start (вызывается каждые N секунд по внутреннему cron механизму).

Она вызывает следующие процедуры: 

  • as_nt_sync_min
  • as_nt_sync_hour
  • as_nt_sync_day
  • as_nt_sync_week
  • as_nt_sync_month

Меняя код этих процедур можно выполнять необходимые проверки по базе и вызывать свои процедуры (например уведомления пользователей). 

Примечание: 

Для вызова раньше мы использовали сервисы наподобие https://cron-job.org

Теперь используется внутренний крон, который настраивается в App Settings в web.config. 

Cron.Key - некий ключ, который затем проверяется в процедуре as_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

as_nt_sync_start возвращает следующие результаты: 

  • SELECT 1 - Msg, Result
  • SELECT 2-10 - вызовы внешних действий (почта, смс, уведомление и т.д.). См. вызов внешних действий. Эти SELECT могут вызываться где-то внутри периодических процедур (min, hour и т.д.). И важно - эти процедуры не должны возвращать в общий поток вывода ничего кроме подобных запросов!.
Falcon Space - функциальная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space
Веб-платформа для создания личных кабинетов

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Веб-приложения на MS SQL. Партнерская программа для разработчиков и веб-студий

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space, используя только SQL и HTML.
Смотреть примеры с кодом SQL
Документация по платформе
Работа на MS SQL Server

Google поиск по нашей документации