Magento proporciona dos scripts cron en su directorio raíz, cron.php y cron.sh.
¿Cuál es el mejor para correr y por qué?
Sería mejor ejecutar cron.sh
A partir de Magento EE 1.13.xy CE 1.8.x, la mecánica de cron ha cambiado donde Magento ha introducido una nueva función de modo de programación.
Hay 2 modos disponibles: 1. predeterminado: ejecuta crons programados. 2. siempre: como su nombre lo indica, estas tareas se ejecutarán incondicionalmente cada vez que se active cron y no necesiten horarios definidos explícitamente.
Básicamente, cuando se llama a cron.php sin ningún parámetro, se utiliza shell_exec para ejecutar dos procesos de cron.sh. Cada uno con un parámetro diferente ("predeterminado" o "siempre"). Cron.sh a su vez pasa este parámetro de nuevo a cron.php que luego ejecuta el cron. Internamente, Magento utiliza su infraestructura de eventos para procesar los dos modos mediante el envío de eventos con los nombres "predeterminado" y "siempre". Mage_Cron luego implementa dos métodos de observación.
Mirando cron.php, notará el uso de la función PHP shell_exec. Además de ser un problema de seguridad, la función puede devolver NULL cuando se produce un error o el programa no produce ningún resultado. No es posible detectar fallas de ejecución con esta función. Esto significa que en cualquier momento dado cuando su script / código falla debido a un error, sucede lo siguiente: 1. El cronjob se vuelve obsoleto, 2. No se registra ningún error, 3. y nadie sabe que algo de esto ha sucedido.
Para superar esto, se deben agregar los siguientes cronjob:
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=default
*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=always
Esto garantizará que los modos de proceso siempre se ejecuten sin utilizar la función de respaldo shell_exec y que el cron no se vuelva obsoleto ya que se produce una excepción si se produce un error.
www-data
cambiaría a cualquier usuario que ejecute procesos del servidor web. También vale la pena señalar que para muchas configuraciones de alojamiento CPanel / WHM,shell_exec()
se va a deshabilitar.*/5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=default */5 * * * * www-data /bin/sh /path/to/magento/cron.sh cron.php -m=always
y estos comandos dan el error "comando no encontrado" por nupur walia*/5 * * * * /bin/sh /path/to/magento/cron.sh cron.php -m=default