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.
*/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 environ