sql >> Databasteknik >  >> RDS >> Mysql

Mysql PHP Cron för uppdatering av användarstatistik

MySQL lösning:

Du behöver MySQL event att köra på tidsbasis.

Och jag föreslår att du skriver update uttalanden baserat på ditt tillstånd och länka samma procedur till händelseschemaläggaren du vill köra på varje dag som börjar.

Du kan göra det enligt följande:.

Exempel :

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 Syntax

Standardtillståndet för Schemaläggaren är INAKTIVERAD.
Du måste aktivera det med något av följande uttalanden.

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

När händelseschemaläggaren är PÅ, listas händelseschemaläggningstråden i utgången av SHOW PROCESSLIST som en demonprocess, och dess tillstånd representeras som visas här:

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 händelseschemaläggaren är PÅ, skulle du se att den fungerar.

Se :Konfiguration av MySQL Event Scheduler




  1. Hur man ändrar inställningar för SQL Developer för att korrekt känna igen aktuell version av SDK

  2. Hur får man kolumnnamn på ett schema i sqlsoup i python?

  3. ORA-00900:fel i en felaktig SQL-sats? Vad är det för fel på min sql?

  4. asp.net / EntityFramework - Varför kraschar min programpool?