El título lo resume más o menos. ¿Hay alguna diferencia entre el archivo de shell y el archivo php para el cron de Magento?
Si hay una diferencia, ¿hay alguna razón para ejecutar una en lugar de la otra?
magento-1.9
cron
Chris Morris
fuente
fuente
Respuestas:
El cron.sh apunta al archivo cron.php, por lo que debería apuntar su tarea cronjob al archivo .sh.
Básicamente, dentro del archivo PHP reside toda la lógica para que el cron recupere trabajos de Magento y el archivo sh invoca el archivo PHP.
fuente
cron.sh
archivo está configurado para verificar que no haya un proceso cron ejecutándose en Magento antes de comenzar uno nuevo. Úselo siempre como disparador. Bajo ciertos esquemas de seguridad con WHM / cPanel, es posible que no se le permita ejecutar scripts de shell como trabajos cron y solo entonces se ejecuta directamentecron.php
desde crontab.shell_exec
deshabilitado en WHM / cPanel, pero eso no significa que se informe como deshabilitado cuando secron.php
verificaini_get('disable_functions')
. Entonces cron intenta ejecutarse, veshell_exec
que no está deshabilitado, intenta usarlo y falla porque está deshabilitado. encogimiento de hombrosDeberías estar usando
cron.sh
, es decirDependiendo de su entorno, se
cron.sh
ejecutacron.php
qué se ejecutacron.sh
qué se ejecutacron.php
. Está diseñado para evitar que el cron de Magento ejecute trabajos varias veces o genere demasiados procesos que se superponen.La primera vez que se ejecute,
cron.sh
verificará los procesos actuales en ejecución para ver sicron.php
ya se está ejecutando (sin ningún argumento). Si no, se ejecutaráEn
cron.php
la primera ejecución (y dependiendo de si su sistema operativo / host lo admite) se generarácron.sh
nuevamente , dos veces, pero esta vez pasando argumentos:De nuevo
cron.sh
por segunda vez, volverá a verificar si cron se está ejecutando con los parámetros especificados. De lo contrario, lo pasará de nuevocron.php
condefault
oalways
.Y
cron.php
por última vez, activará a Magento para ejecutardefault
trabajos cron (casi todos), así comoalways
trabajos cron (comoenterprise_refresh_index
). Al separarlos en dos procesos, reduce el riesgo de que un trabajo de larga duración bloquee a otros.fuente
cron.sh
Use
/bin/sh
para procesar este scriptEstablezca una constante
CRONSCRIPT
con el archivo para llamar. $ 1 es el primer argumento, comocron.sh /whatever/path/cron.php
establezca otra constante, aquí puede pasar
always
odefault
explícitamente.cron no tiene ninguna variable de entorno, por lo tanto, no puede simplemente llamar
php
.which
le dice dónde vive el binario php, muy probablemente en/bin/php
$0
es el archivo en sí, como__FILE__
en phpNo estoy seguro exactamente cómo funciona esto, pero qué hace: llamar
cron.php
conphp
.cron.php
Como ya se dijo, cron no tiene un directorio de trabajo ni ninguna otra variable de entorno, por lo tanto, el directorio de trabajo está configurado.
Si llamas a cron.php por curl o algo así, ¿los nombres de los archivos son fijos?
Establezca umask, que define con qué permisos se crean los nuevos archivos: cero permisos, nadie tiene permitido hacer nada.
Asegúrese de que se permiten todas las funciones que se necesitan.
conjunto
$cronmode
si cronmode no está configurado, llamamos
cron.sh
con ambos modosY entonces magento finalmente está haciendo su trabajo:
cargar observadores de eventos y agregarlos al grupo de observadores
si
shell_exec
está deshabilitado, despacha eventos,\Aoe_Scheduler_Model_Observer::dispatchAlways
y\Mage_Cron_Model_Observer::dispatch
ejecuta las tareas cron.fuente