MySQL решение:
Имате нужда от MySQL event
да работи на база време.
Предлагам ви да напишете update
изявления въз основа на вашето състояние и свържете същата процедура към програмата за планиране на събития, която искате да стартирате всеки ден.
Можете да го направите по следния начин:.
Пример :
delimiter //
drop event if exists event_scheduling_sample;
create event if not exists event_scheduling_sample
-- on schedule every 86400 second starts 00:00:00
-- at timestamp( adddate( current_date, 1 ),'00:00:00' )
-- on schedule every 1 day
-- starts current_timestamp
-- ends current_timestamp + interval '5' day
-- on schedule every 1 day
-- starts current_timestamp
-- ends timestamp( current_date,'23:59:59' )
on schedule every 1 day
starts timestamp( current_date + 1, '00:00:00' )
comment 'event scheduling sample'
do
call db_name.procedure_name_that_updates_the_user_records();
;
//
delimiter ;
Вижте :MySQL:Синтаксис на СЪЗДАВАНЕ НА СЪБИТИЕ
Състоянието по подразбиране на Планировчика на събития е ИЗКЛЮЧЕН.
Трябва да го активирате чрез някой от следните изрази.
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
Когато програмата за планиране на събития е ВКЛЮЧЕНА, нишката за планиране на събития е посочена в изхода на SHOW PROCESSLIST
като процес на демон и състоянието му е представено, както е показано тук:
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: root
Host: localhost
db: NULL
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 2. row ***************************
Id: 2
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 3
State: Waiting for next activation
Info: NULL
2 rows in set (0.00 sec)
След като програмата за планиране на събития е включена, ще видите, че работи.
Вижте :Конфигуриране на MySQL Планировчик на събития