Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mysql PHP Cron zum Aktualisieren von Benutzerstatistiken

MySQL Lösung:

Sie benötigen MySQL event auf Zeitbasis laufen.

Und ich schlage vor, Sie schreiben das update Anweisungen basierend auf Ihrem Zustand und verknüpfen Sie dieselbe Prozedur mit dem Ereignisplaner, den Sie jeden Tag starten möchten.

Sie können es wie folgt tun:.

Beispiel :

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 ;

Siehe :MySQL:CREATE EVENT-Syntax

Der Standardzustand des Ereignisplaners ist DEAKTIVIERT.
Sie müssen ihn durch eine der folgenden Anweisungen aktivieren.

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

Wenn der Ereignisplaner eingeschaltet ist, wird der Ereignisplaner-Thread in der Ausgabe von SHOW PROCESSLIST aufgeführt als Daemon-Prozess, und sein Zustand wird wie hier dargestellt dargestellt:

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)

Sobald der Ereignisplaner aktiviert ist, können Sie sehen, dass er funktioniert.

Siehe :Konfiguration des MySQL-Ereignisplaners