Pasé casi 3 días y no puedo entender y hacer que Magento Cron procese las tareas programadas. Estoy ejecutando Magento 1.9.1.0 y recientemente noté que los correos electrónicos de pedidos ahora están en cola en lugar de enviarse al instante. Entiendo la necesidad pero no puedo hacer que el sistema seleccione las colas.
Aquí está mi visión para Cronjob.
Aquí está mi línea de comando cronjob.
Así es como se crean las tareas en la tabla cron_schedule.
Como los registros se crean en la tabla cron_schedule, creo que el Cron se ejecuta una vez cada 5 minutos. Si elimino manualmente estos registros a través de PhpMyAdmin, los registros se crean automáticamente después de un tiempo.
Pero el estado de las tareas sigue "pendiente" y nunca se completa. No estoy seguro si algo anda mal en mi configuración o si me falta algo. ¿Puede alguien ayudarme a hacer que la tarea programada se ejecute a tiempo? Además, ¿por qué se crean múltiples registros para un código de trabajo?
Actualizar
Limpié toda la tabla y el cron creó los trabajos programados. Todos los trabajos están en estado pendiente y nunca se ejecutan, incluso esperando más de 60 minutos. Algo está mal en Magento 1.9.1
Actualización 11/02: Hoy hice un análisis más sobre el proceso.
Edité el cron.php como se muestra a continuación
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';
Edité la clase Mage_Cron_Model_Observer como se muestra a continuación
public function dispatch($observer) {
echo 'iam inside dispath';
Comprendí que cuando el cron ejecuta -mdefault, debería llamar a la función de despacho y se ejecutará. Pero lo que sucedió fue como a continuación en la salida cron.
Content-type: text/html
iam before mdefault 1iam before malways 1i returned success
Significa que el despacho no llama a atall ...
Uno otro intento
Cambié manualmente la variable $isShellDisabled = true;
y cambié la siguiente en cron.php.
if ($isShellDisabled) {
echo 'before always';
Mage::dispatchEvent('always');
echo 'after always';
Mage::dispatchEvent('default');
echo 'after default';
} else {
Mage::dispatchEvent($cronMode);
}
La salida cron para lo anterior es la siguiente
Content-type: text/html
before alwaysiam inside dispath alwaysafter always
Ahora se llama 'dispatchAlways' pero no 'dispatch'
Ninguna de las respuestas me ayuda. Nunca escoge las tareas programadas. Es decir, cuando Cron se ejecuta por primera vez, creó con éxito las tareas en la tabla. Pero nunca ejecuta la tarea.
*/5 * * * * /bin/sh PATH_TO_PRODUCTION/cron.sh
si está disponible.
cron_schedule
mesa? Compruebe si se llena con nuevas tareas después de una hora más o menos