Je dois mettre à jour ma base de données MySQL toutes les heures et je me demandais quels étaient les avantages/inconvénients de l'utilisation d'un cronjob par rapport à un événement MySQL? Par exemple, lequel est le plus rapide? Lequel est le plus sûr? Merci!
Je voudrais toujours faire un travail cron, parce que:
Et finalement, ce n'est pas parce que vous pouvez faites quelque chose que c'est une bonne idée. Mysql est bon pour les données. Ne l'utilisez pas pour "Shell".
MySQL Event Scheduler - Un bon substitut pour cron.
Nous connaissons tous cron, un moyen facile de planifier certains processus, comme la troncature de vos tables de journalisation dans votre base de données MySQL chaque semaine.
Avec MySQL 5.1, les gars de MySQL ont introduit une nouvelle fonctionnalité intéressante: le planificateur d’événements MySQL!
Avec le planificateur d’événements, vous pouvez planifier les tâches que vous souhaitez effectuer sur votre base de données. C’est formidable pour les développeurs Web qui ne peuvent pas créer de tâches cron sur leur espace Web, car leur hôte ne les laissera pas faire! C’est vraiment un excellent substitut pour cron!
Quelques exemples:
vous souhaitez tronquer votre table de journal des applications toutes les semaines, voici comment votre calendrier d'événements devrait se présenter:
CREATE EVENT PurgeLogTable
ON SCHEDULE EVERY 1 WEEK
DO
BEGIN
DELETE FROM `logs` WHERE `LogTime` <= DATE_SUB(CURRENT_TIMESTAMP,INTERVAL 1 WEEK);
INSERT INTO `audit` (`AuditDate`, `Message`) VALUES(NOW(), "Log table purged succesfully!");
END
Mysql présente le planificateur d’événements que nous pouvons utiliser comme alternative à Cronjob. Il y a beaucoup d'avantages sur cronjob comme:
1) Il est écrit directement sur Mysql Server.
2) Ceci est indépendant de la plateforme. Votre application peut être écrite dans n'importe quelle langue, cela n'a pas d'importance. Vous avez juste besoin de connaître mysql.
3) Nous pouvons les utiliser chaque fois qu'une mise à jour ou un nettoyage de la base de données est requis à intervalle régulier.
4) Pas besoin de compiler des requêtes à chaque fois, donc augmentation des performances.
5) Une erreur peut être consignée dans les fichiers journaux. Syntaxe:
DELIMITER //
CREATE EVENT eventName
ON SCHEDULE EVERY 1 WEEK
STARTS 'Some Date to start'
ENDS 'End date If any'
DO
BEGIN
// Your query will be here
END//
DELIMITER ;
Pour plus d'informations, vous pouvez visiter le site officiel: http://dev.mysql.com/doc/refman/5.1/fr/create-event.html
blog de détail: http://goo.gl/6Hzjvg
Veuillez vérifier le code ci-dessous:
if ($product_info) {
if ($product_info['image']) {
$image = $this->model_tool_image->resize($product_info['image'], $this->config->get($this->config->get('config_theme') . '_image_wishlist_width'), $this->config->get($this->config->get('config_theme') . '_image_wishlist_height'));
}
else {
$image = false;
}
}
je vais avec mysql event schedular
comme nous n’avons pas à coder un fichier supplémentaire, nous pouvons remplir notre objectif en écrivant une seule requête.
si seule l'opération liée à la base de données est requise, alors mysql event schedular est un bon choix.
Je travaille avec des événements moi-même maintenant et réfléchi la même chose :)
En plus des réponses ci-dessus:
Utilisez EVENT si la tâche est purement centrée sur les données ou complète les fonctionnalités déjà intégrées à la base de données. Vous avez peut-être déjà des déclencheurs qui nettoient les données, enregistrent certains événements, agrègent certaines données, etc. Si la tâche planifiée que vous souhaitez effectuer fait partie de la conception existante, il est plus cohérent de déclencher la tâche à partir d'un événement. Les événements sont des déclencheurs temporels après tout.
Si vous exécutez un script à partir d'un shell, vous avez besoin d'un nom d'utilisateur/mot de passe stocké dans le script shell ou dans un fichier par défaut. Pour exécuter des événements, vous n'avez pas besoin d'un nom d'utilisateur/mot de passe après la création de l'événement.
IMCO vous devez écrire la logique dans une procédure stockée; invoquez ensuite la procédure à partir d'un événement ou d'un script shell, à votre convenance. Vous pouvez même créer un emplacement dans votre interface utilisateur permettant aux utilisateurs d'appeler la procédure manuellement.
Le planificateur d'événements Mysql est un avantage pour l'environnement d'hôte partagé. En termes de timing, il peut également être programmé à la seconde près. Contrairement à cron, c'est à la minute, mais vous pouvez contourner cette limitation.