J'ai cette procédure stockée. Comment puis-je exécuter cela par exemple avec des intervalles de 5 secondes? Comme une routine pour éliminer les données avec un horodatage de plus d'un jour?
DROP PROCEDURE IF EXISTS `delete_rows_links`
GO
CREATE PROCEDURE delete_rows_links
BEGIN
DELETE activation_link
FROM activation_link_password_reset
WHERE TIMESTAMPDIFF(DAY, `time`, NOW()) < 1 ;
END
GO
Vous pouvez utiliser le planificateur mysql pour l'exécuter toutes les 5 secondes. Vous pouvez trouver des exemples sur http://dev.mysql.com/doc/refman/5.1/en/create-event.html
Je ne l'ai jamais utilisé mais j'espère que cela fonctionnera:
CREATE EVENT myevent
ON SCHEDULE EVERY 5 SECOND
DO
CALL delete_rows_links();
J'ai utilisé cette requête et cela a fonctionné pour moi:
CREATE EVENT `exec`
ON SCHEDULE EVERY 5 SECOND
STARTS '2013-02-10 00:00:00'
ENDS '2015-02-28 00:00:00'
ON COMPLETION NOT PRESERVE ENABLE
DO
call delete_rows_links();
Afin de créer un cronjob, procédez comme suit:
exécutez cette commande: SET GLOBAL event_scheduler = ON;
Si ERREUR 1229 (HY000): la variable 'event_scheduler' est une variable GLOBALE et doit être définie avec SET GLOBAL: mportant
Il est possible de définir le Planificateur d'événements sur DÉSACTIVÉ uniquement au démarrage du serveur. Si event_scheduler est ON ou OFF, vous ne pouvez pas le définir sur DISABLED lors de l'exécution. De plus, si Event Scheduler est défini sur DISABLED au démarrage, vous ne pouvez pas modifier la valeur de event_scheduler au moment de l'exécution.
Pour désactiver le planificateur d'événements, utilisez l'une des deux méthodes suivantes:
En option de ligne de commande lors du démarrage du serveur:
--event-scheduler=DISABLED
Dans le fichier de configuration du serveur (my.cnf ou my.ini sur les systèmes Windows): incluez la ligne où il sera lu par le serveur (par exemple, dans une section [mysqld]):
event_scheduler=DISABLED
Lisez MySQL documentation pour plus d'informations.
DROP EVENT IF EXISTS EVENT_NAME;
CREATE EVENT EVENT_NAME
ON SCHEDULE EVERY 10 SECOND/minute/hour
DO
CALL PROCEDURE_NAME();
Si vous êtes ouvert à une solution hors de la base de données: vous pouvez configurer un travail cron qui exécute un script qui appellera lui-même la procédure.