O título resume bastante. Existe uma diferença entre o arquivo de shell e o arquivo php para o Magento cron?
Se houver uma diferença, existe um motivo para executar um em vez do outro?
magento-1.9
cron
Chris Morris
fonte
fonte
Respostas:
O cron.sh está apontando para o arquivo cron.php, portanto, você deve apontar sua tarefa cronjob para o arquivo .sh.
Basicamente, dentro do arquivo PHP, reside toda a lógica para o cron recuperar tarefas do Magento e o arquivo sh chama o arquivo PHP.
fonte
cron.sh
arquivo é configurado para verificar se não há um processo cron em execução no Magento antes de iniciar um novo. Sempre use-o como gatilho. Sob certos esquemas de segurança com o WHM / cPanel, você pode não ter permissão para executar scripts de shell como tarefas cron e somente então você executa diretamente acron.php
partir do crontab.shell_exec
desabilitado o WHM / cPanel, mas isso não significa que ele é relatado como desabilitado durante ascron.php
verificaçõesini_get('disable_functions')
. Portanto, o cron tenta executar, vêshell_exec
como não desativado, tenta usá-lo e falha porque está desativado. shrugVocê deveria estar usando
cron.sh
, ieDependendo do seu ambiente,
cron.sh
executa ascron.php
execuçõescron.sh
que executamcron.php
. Ele foi projetado para impedir que o cron do Magento execute tarefas várias vezes, ou gerando muitos processos que se sobrepõem.Na primeira vez em que é executado,
cron.sh
verifica os processos em execução atuais para ver secron.php
já está em execução (sem argumentos). Caso contrário, ele executaráNa
cron.php
primeira execução (e dependendo do seu sistema operacional / host), ele aparecerácron.sh
novamente , duas vezes, mas desta vez passando argumentos:De volta
cron.sh
pela segunda vez, ele verificará novamente se o cron está sendo executado com os parâmetros especificados. Caso contrário, ele passará paracron.php
ou comdefault
oualways
.E
cron.php
pela última vez, ele acionará o Magento para executardefault
tarefas cron (praticamente todas elas), bem comoalways
tarefas cron (comoenterprise_refresh_index
). Ao separá-los em dois processos, reduz o risco de um trabalho de longa duração de bloquear outros.fonte
cron.sh
Use
/bin/sh
para processar este scriptDefina uma constante
CRONSCRIPT
com o arquivo a ser chamado. $ 1 é o primeiro argumento, comocron.sh /whatever/path/cron.php
defina outra constante, aqui você pode passar
always
oudefault
explicitamente.O cron não possui nenhuma variável de ambiente; portanto, você não pode simplesmente chamar
php
.which
informa onde o binário php está morando, provavelmente em/bin/php
$0
é o próprio arquivo, como__FILE__
em phpNão sei exatamente como isso funciona, mas o que faz: ligar
cron.php
comphp
.cron.php
Como já foi dito, o cron não possui um dir de trabalho ou qualquer outra variável de ambiente; portanto, o dir de trabalho está definido.
Se você chamar cron.php por curl ou algo assim, os nomes dos arquivos serão corrigidos?
Defina umask, que define com quais permissões os novos arquivos são criados - sem permissão, ninguém tem permissão para fazer nada.
Certifique-se de que todas as funções são permitidas e necessárias.
conjunto
$cronmode
se o cronmode não estiver definido, chamaremos
cron.sh
com os dois modosE então o magento finalmente está fazendo seu trabalho:
carregar observadores de eventos e adicioná-los ao pool de observadores
se
shell_exec
estiver desabilitado, despache os eventos\Aoe_Scheduler_Model_Observer::dispatchAlways
e\Mage_Cron_Model_Observer::dispatch
execute as tarefas cron.fonte