sql >> Database teknologi >  >> RDS >> Mysql

Mysql PHP Cron til opdatering af brugerstatistik

MySQL løsning:

Du kræver MySQL event at køre på tidsbasis.

Og jeg foreslår, at du skriver update udsagn baseret på din tilstand og link den samme procedure til den begivenhedsplanlægger, du vil køre på hver dag, der starter.

Du kan gøre det som følger:.

Eksempel :

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 ;

Se :MySQL:CREATE EVENT-syntaks

Standardtilstanden for Event Scheduler er DEAKTIVERET.
Du skal aktivere den ved hjælp af en af ​​følgende udsagn.

SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;

Når Event Scheduler er TIL, er hændelsesplanlægningstråden angivet i outputtet af SHOW PROCESSLIST som en dæmonproces, og dens tilstand er repræsenteret som vist her:

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)

Når begivenhedsplanlægningen er sat TIL, vil du se, at den virker.

Se :MySQL Event Scheduler Configuration




  1. Hvad er datatypen for unix_timestamp (MySQL)?

  2. Flere SQL-objekter i PHP/MySQLi

  3. Vælg ulåst række i Postgresql

  4. Oracle 'Partition By' og 'Row_Number' nøgleord