web-dev-qa-db-fra.com

Magento 1.9.1 Cron ne fonctionne pas

J'ai de gros problèmes avec le cron de Magento 1.9.1 en espérant que quelqu'un pourra vous aider. J'ai installé AOE et je ne vois pas de battement de coeur.

J'ai ajouté mon travail cron

*/5 * * * * /bin/sh /var/sites/p/domain/public_html/cron.sh

Mais cela ne fonctionne toujours pas, alors j'ai décidé d'essayer et d'essayer de lancer cron.php, cela ne fait rien. C'est mon cron pour ça 

*/5 * * * */usr/bin/wget -O /dev/null -o /dev/null http://www.domain.com/cron.php

Basé sur Magneto 1.8 cron.php, j’ai ajouté ce qui suit au fichier cron.php.

$isShellDisabled = true;

Sur la base de cela ne fonctionne toujours pas, j'ai essayé le fichier cron.php dans le navigateur. Je reçois une erreur dans le navigateur si l'impression est désactivée par défaut pour des raisons de sécurité. 

J'ai donc changé mon php.ini en memory_limit = 512M juste en cas. Cela ne fonctionne toujours pas.

L'erreur que j'ai dans mes rapports pour ceci est:

 a:5:{i:0;s:59:"Mage registry key "_singleton/cron/observer" already exists";i:1;s:537:"#0 /var/sites/p/domain.co.uk/public_html/app/Mage.php(223): Mage::throwException('Mage registry k...')
#1 /var/sites/p/domain.co.uk/public_html/app/Mage.php(477): Mage::register('_singleton/cron...', false)
#2 /var/sites/p/domain.co.uk/public_html/app/code/core/Mage/Core/Model/App.php(1316): Mage::getSingleton('cron/observer')
#3 /var/sites/p/domain.co.uk/public_html/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('default', Array)
#4 /var/sites/p/domain.co.uk/public_html/cron.php(74): Mage::dispatchEvent('default')
#5 {main}";s:3:"url";s:9:"/cron.php";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:5:"admin";}

Toute aide serait vraiment géniale.

Note ** J'ai changé le nom de domaine en DOMAIN car mon site ne convient pas au travail.

7
Vinnie

Quelques étapes simples pour résoudre le problème de Magento Cron:

  1. Sélectionnez Système> Configuration> Avancé> Système> Cron (tâches planifiées) et définissez les valeurs suivantes:

    • Générer des horaires chaque: 15
    • Planifiez à l'avance pour: 20
    • Manqué si pas Run In: 15
    • Nettoyage de l'histoire chaque: 10
    • Histoire de succès à vie: 60
    • Histoire d'échec à vie: 600
  2. Effacer le cache dans Système> Gestion du cache

  3. Effacer la table 'cron_schedule'. Vous pouvez le faire via phpmyadmin ou exécuter la commande suivante dans la console SQL:

    TRUNCATE TABLE cron_schedule;

  4. Ajouter la ligne suivante aux paramètres cron (utiliser des chemins absolus):

    */5 * * * */usr/bin/php /absolute/path/on/votre/serveur/to/file/cron.php

Remarque: dans certaines configurations sur le serveur Web (Apache/nginx), il est autorisé à exécuter des scripts php. Dans ce cas, ajoutez cette ligne à la crontab de l'utilisateur du serveur Web. Exemple pour Apache: crontab -u Apache -e

  1. Redémarrez le démon cron.

  2. Vérifiez la table 'cron_schedule', si elle n'est pas vide - le script cron de Magento commencera à fonctionner.

17
ToxaBes

Eh bien, j'ai eu un problème différent. Mon cron ne fonctionnait tout simplement pas, bien que cron.php ait été exécuté correctement. Toujours pas de sortie, et aucun travail effectué. 

J'ai vérifié cron_schedule et remarqué que le dernier emploi date du 19 mars de cette année (sic!). Alors j'ai continué à chercher une cause. 

Enfin, j'ai remarqué qu'il y a un processus en cours avec ma tâche cron à partir du 19 mars (sic!).

josh 21350 99.6 0.4 350400 133492 ? R Mar19 241812:21 /usr/bin/php /var/www/mysite/cron.php -mdefault

J'ai tué le travail avec: kill -9 21350

Et le tour est joué! Soudainement, la newsletter est envoyée!

Je ne savais pas pourquoi et comment cela s'était passé. Maintenant, je sais que je devrais y faire attention, alors je le ferai.

5
Deus777

Je viens de voir que vous utilisez magento 1.9.1.

Exécutez le cron en utilisant php à la place:/usr/local/bin/php -f /home/cpanel_username/public_html/cron.php

Cela devrait résoudre les problèmes d'autorisations http que vous pourriez rencontrer lors de l'utilisation de 'usr/bin/wget -O/dev/null -o/dev/null'

Essayez cette commande et laissez-moi savoir si cela fonctionne pour vous. 

1
Maur