J'ai passé presque 3 jours et je ne peux pas comprendre et faire le Magento Cron pour traiter les tâches planifiées. J'utilise Magento 1.9.1.0 et j'ai récemment remarqué que les e-mails de commande sont désormais mis en file d'attente au lieu d'être envoyés instantanément. Je comprends la nécessité mais je ne peux pas faire le système pour choisir les files d'attente.
Voici ma vision pour Cronjob.
Voici ma ligne de commande cronjob.
Voici comment les tâches sont créées dans la table cron_schedule.
Étant donné que les enregistrements sont créés dans la table cron_schedule, je pense que le Cron fonctionne une fois toutes les 5 minutes. Si je supprime manuellement ces enregistrements via PhpMyAdmin, les enregistrements sont créés automatiquement après un certain temps.
Mais l'état des tâches reste «en attente» et jamais terminé. Je ne sais pas si quelque chose ne va pas dans ma configuration ou si je manque quelque chose. Quelqu'un peut-il m'aider à exécuter la tâche planifiée à temps? Aussi pourquoi plusieurs enregistrements sont créés pour un code de travail?
Mise à jour
J'ai effacé la table entière et le cron a créé les travaux planifiés. Tous les travaux sont en attente et ne s'exécutent jamais, même en attendant plus de 60 minutes. Quelque chose ne va pas dans Magento 1.9.1
Mise à jour 11/02: Aujourd'hui, j'ai fait plus d'analyses sur le processus.
J'ai édité le cron.php comme ci-dessous
echo 'iam before mdefault 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &");
echo 'iam before malways 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &");
echo 'i returned success';
J'ai édité la classe Mage_Cron_Model_Observer comme ci-dessous
public function dispatch($observer) {
echo 'iam inside dispath';
Ma compréhension était que lorsque le cron exécute le -mdefault, il devrait appeler la fonction de répartition et l'exécution se produira. Mais ce qui s'est passé était comme ci-dessous dans la sortie cron.
Content-type: text/html
iam before mdefault 1iam before malways 1i returned success
Cela signifie que la dépêche n'appelle pas du tout ...
Un autre essai
J'ai changé manuellement la variable $isShellDisabled = true;
et j'ai changé celle ci-dessous dans cron.php.
if ($isShellDisabled) {
echo 'before always';
Mage::dispatchEvent('always');
echo 'after always';
Mage::dispatchEvent('default');
echo 'after default';
} else {
Mage::dispatchEvent($cronMode);
}
La sortie cron pour ce qui précède est comme ci-dessous
Content-type: text/html
before alwaysiam inside dispath alwaysafter always
Maintenant, il appelle le «dispatchAlways» mais pas le «dispatch»
Aucune des réponses ne m'aide. Il ne choisit jamais les tâches planifiées. C'est-à-dire lorsque le Cron s'exécute pour la première fois, il a réussi à créer les tâches dans le tableau. Mais il n'exécute jamais la tâche.
la source
*/5 * * * * /bin/sh PATH_TO_PRODUCTION/cron.sh
si disponible.cron_schedule
table? Vérifiez si elle est remplie de nouvelles tâches après une heure environRéponses:
C'était la version PHP de Cron Jobs.
La version PHP a été définie correctement pour le site, c'est pourquoi il fonctionnait; cependant Cron Jobs s'exécutait sur le serveur natif PHP 5.3, c'est pourquoi j'obtenais les erreurs uniquement lors de l'exécution de Cron. J'ai mis à jour la version 5.5.
Commande Cron modifiée:
ou en hostgator:
dans cron.php
Après cette ligne, ajoutez:
la source
php -v
dans le terminal pour voir quelle version PHP le terminal utilise. Dans mon cas, c'était 5,6. J'ai donc dû forcer l'utilisation de PHP 7.0 en passantphp
àea-php70
incrontab -e
. Merci!as-tu essayé de vider la
cron_schedule
table? Vérifiez s'il est rempli de nouvelles tâches après environ une heure.Vous pouvez également utiliser Aoe_Scheduler pour désactiver des tâches cron spécifiques. Vérifiez si un élément particulier peut provoquer une erreur qui interrompt toutes les autres tâches.
La façon dont les cronjobs Magento sont configurés une erreur fatale dans un script entraînera l'échec de l'exécution de toutes les tâches
la source
Dans un premier temps, je suggère de rétablir vos paramètres pour les paramètres cron par défaut de Magento:
Il y a un problème avec vos paramètres actuels: votre emploi du temps est généré toutes les 15 minutes mais uniquement planifié à l'avance pendant 5 minutes, ce qui laisse un intervalle de 10 minutes.
la source
$isShellDisabled = true;
et lorsque je lance Cron.php via le navigateur, les tâches sont sélectionnées, mais pas via CronTab.php -f cron.php
et./cron.sh
voyez s'ils produisent quelque chose à approfondir.Même problème pour moi.
Erreur "Trop tard ..." trouvée.
Après le nettoyage de la
cron_schedule
table, cron.sh a cessé de fonctionner (plus de planification).Fonctionne uniquement après avoir tué tous les anciens processus Cron.
la source
J'ai eu le même problème. Mon problème était spécifique au fuseau horaire: les colonnes
created_at
etscheduled_at
dans lecron_schedule
tableau devraient être UTC + 0, mes entrées étaient UTC + 2.Pour vérifier cela , vous pouvez simplement les dates de
created_at
etscheduled_at
hier et d' attendre jusqu'à ce que le prochain programme de Cron.J'espère que cela aide quelqu'un!
la source
Sur Bluehost, dans cron.sh change
à
Par défaut, dans l'hébergement partagé, il exécute PHP 5.2.
J'ai aussi dû changer
cron.php
, en remplaçant les deux$isShellDisabled
lignes par$isShellDisabled = true;
Pour se débarrasser des avertissements PHP, j'ai également ajouté ces lignes avant
la source