Arquivo da Categoria ‘Magento’

Como funciona o sistema de Cron do Magento

quarta-feira, 11 de agosto de 2010

O termo Cron vem da funcionalidade de agendamento de tarefas no Unix. No Magento o seu proposito é o mesmo. É importante deixar o Cron configurado pois ele é responsável por manter a loja funcionando de forma correta.

Periodicamente scripts do Magento precisam ser executados para executar tarefas como:

  • Reindexar preços de catálogo(melhora performance de busca)
  • Enviar newsletters
  • Gerar o Google Sitemap
  • Alertar usuários de mudanças de preço ou estoque
  • Atualizar automaticamente cotação de moedas estrangeiras
  • Fazer limpeza de logs no banco de dados
  • Executar periodicamente tarefas que você desenvolveu no seu módulo, etc.

Gastei um tempo para tentar entender como funciona exatamente o sistema de Cron, pois é bastante confuso. Em algumas documentações eu vi que deveria agendar o cron.php para rodar, em outras me diziam que isso deveria ser feito pela administração. Com um tempo de estudo entendi como funciona e vou explicar agora.

Agendamento de tarefas dos módulos

Cada módulo do Magento possui seu próprio agendamento. Nem todos os módulos vão rodar sempre no mesmo horário. Vamos tomar como exemplo o módulo de Newsletter.

Para que este módulo envie as newsletters programadas no dia e horário configurado pelo administrador é necessário que algum script seja executado em determinado período. Para fazer essa configuração o arquivo config.xml do módulo possúi a seguinte configuração:

<config>

    <!-- ... -->

    <crontab>
        <jobs>
            <newsletter_send_all>
                <schedule><cron_expr>*/5 * * * *</cron_expr></schedule>
                <run><model>newsletter/observer::scheduledSend</model></run>
            </newsletter_send_all>
        </jobs>
    </crontab>

    <!-- ... -->

</config>

A expressão */5 * * * * significa que o script deverá rodar todo dia a cada 5 minutos. A notação é a mesma utilizada no crontab do Linux. Já a reindexação de preços possui a expressão 0 2 * * * que significa que rodará todos os dias as 2:00 a.m.

Como o magento gerencia as tarefas

Para o Magento gerenciar essas tarefas ele possui uma tabela especifica chamada cron_schedule. Dentre as colunas da tabela há as que se destacam:

  • job_code: código do processo a ser executado
  • status: status da tarefa
  • scheduled_at: data e hora em que a tarefa está prevista para ser executada

Tomando ainda de exemplo o módulo de Newsletter, teremos na tabela cron_schedule os valores:

Essa linha informa que o processo newsletter_send_all, ou seja os envios de Newsletters será executado às 14:35 do dia 06/08/2010. Uma vez executado o status muda para "success". De acordo com que o arquivo cron.php for rodando ele criará mais registros como esse agendando a tarefa para 14:40, 14:45, 14:50, etc.

Na raíz do Magento há um arquivo chamado cron.php. Este arquivo é responsável por gerenciar toda a parte de agendamento. Ele criar os agendamentos na cron_schedule, roda as tarefas em seus devidos horários, limpa tarefas antigas, etc. Ele deve ser executado periodicamente para fazer a gerência de tarefas. Você pode configurá-lo dentro do seu servidor utilizando o Crontab(Linux) ou o Agendador de Tarefas(Windows). Se você não puder fazer essa configuração no seu servidor ou seu serviço de hospedagem não da suporte você pode optar por usar serviços on-line como o http://cronless.com/ ou o http://www.onlinecronjobs.com/.

Eu recomendo que este arquivo seja chamado a cada 5 minutos. Assim fica mais difícil tarefas serem executados fora do horário previsto ou até mesmo causar uma sobrecarga de tarefas sendo executadas, por exemplo, seu arquivo foi executado na ultima vez às 14h e você configurou para ele ser chamado a cada 30 minutos, logo a próxima vez que ele rodar será às 14:30. Todos os processos que foram agendados para rodar entre 14 e 14:30 vão ser executados todos de uma vez às 14:30.

Configurações de execução de cron no Magento

O Magento possúi algumas configurações relacionadas aos agendamentos de tarefa. Se você for em Admin > System > Configuration > System > Cron(na versão inglẽs) verá as seguintes opções:

  • Generate schedules every
    Tempo(em minutos) em que será gerado na tabela cron_schedule um registro com agendamento de tarega. Exemplo: Se esta opção está setada com o valor 15 e o cron.php rodou pela última vez às 14h então só será gerado registros de agendamento às 14:15. Se o cron.php rodar às 14:10 nada fará além de executar tarefas agendadas naquele horário. Valor recomendado: 60.
  • Schedule ahead for
    Será gerada tarefas até x minutos a frente. Exemplo: se este valor está setado para 10, o cron.php roda às 14h e a tarefa deve ser rodado de 5 em 5 minutos, será gerado na tabela cron_schedule tarefas para às 14:00, 14:05 e 14:10. Valor recomendado: 15.
  • Missed if not run within
    Tempo em minutos em que uma tarefa será considerada perdida. Exemplo: Se estiver configurado com o valor 3, a tarefa está programada para rodar às 14h o arquivo cron.php deve rodar até as 14:03 ou então esta tarefa não rodará mais e seu status mudará para "missed". Valor recomendado: 60.
  • History cleanup every
    Tarefas executadas ou perdidas serão limpas a cada x minutos. Valor recomendado: 120.
  • Success history lifetime
    Registros de tarefas executadas com sucesso ficará por até x minutos após sua execução. Valor recomendado: 120.
  • Failure history lifetime
    Registros de tarefas executadas e falharam ficará por até x minutos após sua execução. Valor recomendado: 120.
Tags / - -
Bruno Viana / 11 de agosto de 2010

Lançado a versão 2.0 do NOIX CORREIOS

terça-feira, 27 de julho de 2010

noix_correios

Foi lançado hoje a nova versão do módulo NOIX CORREIOS. O módulo conta com algumas novidades:

  • Nova forma de cálculo de volume
    Informando os atributos que irão receber as informações de altura, largura e comprimento dos produtos é possível ter o cálculo de preço real.
     
  • Adicionado rastreio de pedidos
    Agora, quando o número de rastreio for adicionado ao Magento, o NOIX CORREIOS irá buscar as informações de rastreio e exibí-las.
     
  • Integração com o sistema de promoções do Magento
    Para cada promoção de carrinho de compras criada, pode ser criar uma ação que irá afetar diretamente no preço dos fretes exibidos pelo módulo.

Confira o módulo no endereço http://www.magentocommerce.com/extension/specs/4101/noix_correios. Dê seu feedback através da área de discussão do módulo no Magento Connect..

Bruno Viana / 27 de julho de 2010

Quando se lida com muitos produtos no Magento, relacionar produtos se torna bastante chato na versão Community, já que é necessário fazer de um por um como na imagem abaixo:

cross sell 0 en

Pois bem, na versão 1.7 do Magento Enterprise Edition é possível criar regras (bem parecida com as que criamos para uma promoção) para associar automaticamente produtos.

Para isso basta entrar na opção de menu como é mostrado na imagem:

cross sell 1 en

Na hora de criar uma regra você tem várias opções como:

  • Setar a prioridade da regra. Assim uma regra com prioridade maior pode se sobrepor a outra na hora de exibir as relações
  • Aplicar aos 3 tipos de relacionamento existentes no Magento: cross-sell, up-sell e produtos relacionados
  • As regras podem ser fixas ou existir por um determinado período
  • Limitar o máximo de produtos exibidos pela regra

cross sell 2 en

E após escolher a regra de relacionamento, é posivel escolher uma regra para limitar quais produtos a regra encontrou serão selecionados. No exemplo abaixo a regra busca pro produtos que não estejam nas categorias indicadas(primeira imagem) e depois diz que dos produtos que a regra encontra só irá exibir aqueles que tiverem a mesma cor.

cross sell 3 en

cross sell 4 en

Bruno Viana / 30 de março de 2010

Seguindo a sua tradição de contribuir com a comunidade com ferramentas Open Source como o NOIX ACL, a NOIX lança seu módulo de cálculo de frete dos Correios para o Magento E-Commerce, o NOIX CORREIOS.

Ele se aproveita do Webservice disponibilizado pelos Correios gratuitamente e é de fácil instalação através do Magento Connect.

Com o NOIX CORREIOS é possível realizar cálculos de frete nos principais serviços dos Correios:

  • PAC (Encomenda normal)
  • Sedex
  • Sedex 10
  • Sedex Hoje
  • Sedex a Cobrar

Além disso o módulo também calcula fretes de lojas que possuam contrato. Ou seja, se a loja possuir contrato com os Correios, apenas informando seu código e senha é possível oferecer aos seus clientes preços mais baratos que no balcão.

Instale o NOIX CORREIOS: http://www.magentocommerce.com/extension/2873/noix-correio

Bruno Viana / 19 de fevereiro de 2010

Mudando manualmente a ‘base URL’ do Magento

terça-feira, 8 de setembro de 2009

O Magento possui duas configurações de URL: uma “unsecure” e outra “secure”. Ambas são definidas no momento da instalação e podem ser modificadas no próprio painel administador. O problema é que, quando mudamos o diretório no qual o Magento foi instalado, modificando assim a URL, nada funciona como deve. Isso porque os caminhos para todas as imagens, arquivos css, javascript, etc. ficarão setados de forma errada.

Corrigir esse problema é bem simples – há inclusive duas maneiras de se resolver rapidamente. A primeira maneira, que vejo como mais simples, é acessar o banco de dados da sua aplicação e modificar direto as URLs nos campos“web/unsecure/base_url” e “web/secure/base_url”, que ficam na tabela “core_config_data”. Depois disso, basta apagar todo o conteúdo da pasta /var/cache e… voila!.

Há uma segunda maneira; essa não é necessário mexer no banco de dados. Simplesmente modifique o nome do arquivo /app/etc/local.xml. Ao fazer isso, abra o Magento no browser e veja que ele já irá rodar o instalador. Não se desespere! Continue a instalação como se fosse um Magento novo, modificando apenas os dados da base_url. E quando a instalação terminar, o Magento funcionará perfeitamente, já com todas as modificações efetuadas no antigo endereço

Mamura / 8 de setembro de 2009