Ho trascorso quasi 3 giorni e non riesco a capire e realizzare Magento Cron per elaborare le attività pianificate. Sto eseguendo Magento 1.9.1.0 e recentemente ho notato che le e-mail degli ordini sono ora in coda invece di inviarle istantaneamente. Capisco la necessità ma non riesco a fare in modo che il sistema scelga le code.
Ecco il mio vedere per Cronjob.
Ecco la mia riga di comando cronjob.
Ecco come vengono create le attività nella tabella cron_schedule.
Poiché i record vengono creati nella tabella cron_schedule, penso che Cron sia in esecuzione una volta ogni 5 minuti. Se elimino manualmente questi record tramite PhpMyAdmin, i record vengono creati automaticamente dopo qualche tempo.
Ma lo stato delle attività rimane "in sospeso" e mai completo. Non sono sicuro se qualcosa non va nella mia configurazione o mi manca qualcosa. Qualcuno può aiutarmi per favore come eseguire l'attività pianificata in tempo. Inoltre, perché vengono creati più record per un codice lavoro?
Aggiornare
Ho cancellato l'intera tabella e il cron ha creato i lavori pianificati. Tutti i lavori sono in sospeso e non vengono mai eseguiti nemmeno in attesa di oltre 60 minuti. Qualcosa non va in Magento 1.9.1
Aggiornamento 11/02: oggi ho fatto qualche analisi in più sul processo.
Ho modificato cron.php come di seguito
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';
Ho modificato la classe Mage_Cron_Model_Observer come di seguito
public function dispatch($observer) {
echo 'iam inside dispath';
La mia comprensione era quando il cron esegue -mdefault dovrebbe chiamare la funzione dispatch e l'esecuzione avverrà. Ma quello che è successo è stato come sotto nell'output cron.
Content-type: text/html
iam before mdefault 1iam before malways 1i returned success
Significa che la spedizione non si chiama atall ...
Un altro tentativo
Ho cambiato manualmente la variabile $isShellDisabled = true;
e ho cambiato il seguito in cron.php.
if ($isShellDisabled) {
echo 'before always';
Mage::dispatchEvent('always');
echo 'after always';
Mage::dispatchEvent('default');
echo 'after default';
} else {
Mage::dispatchEvent($cronMode);
}
L'output cron per quanto sopra è il seguente
Content-type: text/html
before alwaysiam inside dispath alwaysafter always
Ora chiama sempre "dispatch" ma non "dispatch"
Nessuna delle risposte mi aiuta. Non seleziona mai le attività pianificate. Vale a dire quando Cron viene eseguito per la prima volta ha creato correttamente le attività nella tabella. Ma non esegue mai l'attività.
*/5 * * * * /bin/sh PATH_TO_PRODUCTION/cron.sh
se disponibile.
cron_schedule
tavolo? Controlla se si riempie di nuove attività dopo circa un'ora