Como configurar o cron do Magento, forma que funciona mesmo

Agora a partir da versão 1.9.1 do Magento para para que os emails sejam enviados corretamente é preciso configurar o Cron do servidor para rodar o arquivo cron.sh.

Ou seja, agora não basta apenas instalar a loja magento e sair usando, é preciso essa configuração a mais dentro do Magento, outros recursos que ficam a cargo do cron são:

  • Controlar a regra de preços do catálogo
  • Enviar Malas diretas disparadas do Magento (Newsletters)
  • Gerar Google sitemaps
  • Alertas/Notificações (Mudança de preço do produto, Aviso de que o produto voltou a ter estoque…)
  • Atualização automática de moedas

Na prática é mais percebido porque sem essa configuração o admin não envia email para o cliente, não envia o email de pedido realizado com sucesso, não inicia ou encerra uma promoção com tempo definido.

Muitos artigos que encontrei não conseguiram resolver meu problema, então agora que finalmente resolvi, posso compartilhar a solução com todos.

Configurando o Cron no Magento com cpanel (Cron Tab ou Tabalho Cron)

No cpanel clique no ícone do cron ou digite cron na pesquisa pra mostrar facilmente. Caso não tenha um email configurado, configure um, assim você será informado caso ocorra algum erro. A configuração é a seguinte:

crontab-magento

Por padrão do cpanel fica assim:

*/5 * * * * /bin/sh /home/[usuário cpanel]/public_html/cron.sh

Com essa configuração você receberá um email toda vez que o cron for rodado (cada 5 minutos) deixe receber algumas vezes pra saber se está rodando corretamente ou se virá alguma mensagem de erro. Depois disso pode acrescentar o comando >/dev/null 2>&1 para não receber mais os emails,  ficando assim

*/5 * * * * /bin/sh /home/[usuário cpanel]/public_html/cron.sh >/dev/null 2>&1

Configurando Crontab no Magento com Shell

Aqui é preciso ter permissão para fazer essa alteração no acesso ssh

Com o Shell aberto rode os comandos:

  1. Cria ou edita um crontab para o usuario apache:
    crontab -u apache-user-name -e
  2. Um editor de texto é exibido (You might need to choose a text editor first.) entre com o seguinte texto
    */5 * * * * /bin/sh /[diretório da loja]/cron.sh
  3. Salve suas alterações para o crontab e saia do editor

Simples assim, sem códigos mirabolantes ou instalação de módulos extras, mesmo que esse codigo tenha funcionado nos vários servidores que já usei pode ser que no seu seja necessário alguma diferença, então se tiver alguma dificuldade deixe um comentário aqui embaixo

Um abraço e até a próxima.

fonte: http://devdocs.magento.com/guides/m1x/install/installing_install.html#install-cron

Respostas de 15

  1. de quanto em quanto tempo é interessante manter o cron para rodar?

    de 5 em 5 minutos? deixei 1 vez a cada 1 hora, o que acham?

  2. Olá, estou com uma dúvida, no meu caso não tenho cPanel, estou usando AWS e tenho acesso via SSH, para configurar o cron preciso utilizar a opção com Shell?

    Obrigado

    1. Oi, Não tenho como é pelo ssh, se é aplicando o comando direto ou se tem que editar algum arquivo, mas a linha de comando que usei aqui será a igual no cron via shell.

  3. Parabéns Ronaldo pela matéria. Eu agendei o cron corretamente, mas não me atentei a possibilidade de enviar um email na execução do Cron, ate ler sua matéria.
    Agora descobri que esta apresentando um erro na execução do cron:

    Failed loading /opt/php54/lib/php/extensions/no-debug-non-zts-20100525/ioncube_loader_lin_5.4.so: /opt/php54/lib/php/extensions/no-debug-non-zts-20100525/ioncube_loader_lin_5.4.so: undefined symbol: zend_new_interned_string
    Failed loading /opt/php54/lib/php/extensions/no-debug-non-zts-20100525/ZendGuardLoader.so: /opt/php54/lib/php/extensions/no-debug-non-zts-20100525/ZendGuardLoader.so: undefined symbol: zend_new_interned_string
    Content-type: text/html

    Fatal error: Uncaught exception ‘Zend_Db_Adapter_Exception’ with message ‘The PDO extension is required for this adapter but the extension is not loaded’ in /home/trind571/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php:344
    Stack trace:
    #0 /home/trind571/public_html/lib/Zend/Db/Adapter/Abstract.php(248): Zend_Db_Adapter_Pdo_Abstract->setFetchMode(2)
    #1 /home/trind571/public_html/app/code/core/Mage/Core/Model/Resource.php(175): Zend_Db_Adapter_Abstract->__construct(Array)
    #2 /home/trind571/public_html/app/code/core/Mage/Core/Model/Resource.php(110): Mage_Core_Model_Resource->_newConnection(‘pdo_mysql’, Object(Mage_Core_Model_Config_Element))
    #3 /home/trind571/public_html/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php(320): Mage_Core_Model_Resource->getConnection(‘core_write’)
    #4 /home/trind571/public_html/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php(350): Mage_Core_Model_Resource_Db_Abstract->_getConnection(‘write’)
    #5 /home/trind571/public_html/app/code/core/Mage/Core/Model/Resource/Db/Abstract.php(335) in /home/trind571/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php on line 344

    Estou utilizando o PHP 5.4.45
    Sabe o que poder ser?

    1. Não tenho certeza, parece que falta um complemento, mas é estranho porque sua versão do php é compatível com Magento.
      De qualquer forma experimenta colocar a versão 5.5 ou 5.6 do php

      1. vlw Ronaldo,
        depois que fiz a pergunta atualizei para a versão para a 5.6, mas continuo com o mesmo problema. Quando utilizo a função phpinfo(), para ver dados do php da minhas hospedagem, la aparece que tem a extensão do PDO.
        Estou achando que deve ser problema na minha hospedagem ha Hostgator, abri um chamado com eles. Vou aguarda a resposta.

  4. Ronaldo Diniz. Unico tutorial que resolveu efetivamente o caso do não envio dos emails. Unico tutorial que inclusive mencionou que agora a partir do magento 1.9.xx não é apenas instalar o magento. E olha que tem muita informação para se ler a este respeito. Agradeço sua ajuda, foi demais!

  5. O meu aparece esse erro
    /home/easypathserver/public_html/loja/cron.sh: line 26: $’\r’: command not found
    /home/easypathserver/public_html/loja/cron.sh: line 54: syntax error: unexpected end of file

    sabe o que pode ser amigo

  6. Olá o diretório da minha loja é o diretório raiz, como ficaria no comando citado acima por gentileza

    /home/[o que colocar aqui]/public_html/cron.sh >/dev/null 2>&1

    obrigado

  7. Boa tarde, estou fazendo um site com magento instalei a versão 1.9.3.8 cadastro os produtos mas não aparece nada na página home. Pode me dizer o que pode ser.

    Grato

    Marcelo

    1. podem ser vários motivos:

      1. Para produtos aparecerem na Home é preciso colocar um widget
      2. o produto deve ter pelomenos 1 item em estoque
      3. O produto deve ser colocado “Em estoque”
      4. O produto deve estar habilitado
      5. pode ser preciso limpar o cache e reindexar a loja

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.