O Magento fornece dois scripts cron em seu diretório raiz, cron.php e cron.sh.
Qual é o melhor para executar e por quê?
Seria melhor executar o cron.sh
A partir do Magento EE 1.13.xe CE 1.8.x, a mecânica do cron mudou quando o Magento introduziu uma nova função no modo de agendamento.
Existem 2 modos disponíveis: 1. padrão - executa crons agendados. 2. always - como o nome indica, essas tarefas serão executadas incondicionalmente toda vez que o cron for acionado e não precisar de agendamentos explicitamente definidos.
Basicamente, o cron.php sendo chamado sem nenhum parâmetro usa shell_exec para executar dois processos do cron.sh. Cada um com um parâmetro diferente ("padrão" ou "sempre"). O Cron.sh, por sua vez, passa esse parâmetro de volta ao cron.php, que executa o cron. Internamente, o Magento usa sua infraestrutura de eventos para processar os dois modos, despachando eventos com os nomes “padrão” e “sempre”. Mage_Cron então implementa dois métodos de observação.
Olhando cron.php, você notará o uso da função PHP shell_exec. Além de ser uma preocupação de segurança, a função pode retornar NULL quando ocorrer um erro ou o programa não produzir saída. Não é possível detectar falhas de execução usando esta função. Isso significa que, em qualquer momento em que seu script / código falhe devido a um erro, acontece o seguinte: 1. O cronjob fica obsoleto, 2. Nenhum erro é registrado, 3. e ninguém sabe que isso aconteceu.
Para superar isso, os seguintes cronogramas devem ser adicionados:
*/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
Isso garantirá que os modos de processo sempre sejam executados sem o uso da função PHP de fallback shell_exec e que o cron não fique obsoleto, pois uma exceção será lançada se ocorrer um erro.
www-data
would change to whatever user runs web server processes. Also worth noting that for many CPanel/WHM hosting setups,shell_exec()
is going to be disabled.*/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
e estes comandos dar "comando não encontrado" erro nupur Walia*/5 * * * * /bin/sh /path/to/magento/cron.sh cron.php -m=default