Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql PHP Cron pour mettre à jour les statistiques des utilisateurs

MySQL solution :

Vous avez besoin de MySQL event pour fonctionner sur une base temporelle.

Et je vous suggère d'écrire la update déclarations en fonction de votre condition et liez la même procédure au planificateur d'événements que vous souhaitez exécuter chaque jour.

Vous pouvez le faire comme suit :.

Exemple :

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 référer à :MySQL :syntaxe CREATE EVENT

L'état par défaut du planificateur d'événements est DÉSACTIVÉ.
Vous devez l'activer par l'une des instructions suivantes.

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

Lorsque le planificateur d'événements est activé, le thread du planificateur d'événements est répertorié dans la sortie de SHOW PROCESSLIST en tant que processus démon, et son état est représenté comme indiqué ici :

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)

Une fois le planificateur d'événements activé, vous le verrez fonctionner.

Se référer à :Configuration du planificateur d'événements MySQL