Le problème
Lorsque le cache Magento est activé, une tâche ne passe pas en statut Running avant de passer en statut Success.
Or, si une tâche Cron prend plus de temps que le délai entre l’exécution de deux instances du cron.php, celle-ci sera ré-exécutée à la deuxième instance.
Ceci peut poser de graves problèmes de conflit entre les différents tâches.
Version de Magento concernée par ce problème : 1.4.1.1
L’analyse technique
Le problème vient du fait que le modèle Mage_Cron_Model_Schedule n’est pas rechargé entre la mise à jour du statut en running et la mise à jour de la date d’exécution.
Comme cette mise à jour intervient directement dans un foreach qui, par définition, opère par copie des valeurs et non par référence, chaque élément n’est pas automatiquement mis à jour à l’enregistrement du modèle.
La solution
Pour régler cela, il faut donc forcer le rechargement du modèle.
Une des solutions est de modifier la classe Mage_Cron_Model_Observer (en attendant un fix coté Magento).
La modification consiste en l’ajout à la ligne 102 de l’instruction :
$schedule = Mage::getModel('cron/schedule')->load($schedule->getId());
Bien sur, il est aussi possible et même préférable de surcharger proprement le modèle.



Ping : Tweets that mention Tâche Cron Magento non mise au statut Running | Blog Internim -- Topsy.com
good
Thanks for offering this information.