Posts com a Tag ‘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

Criando um módulo básico no Magento

quinta-feira, 4 de fevereiro de 2010

A criação de um modulo no Magento E-commerce exige conhecimento em várias coisas como a declaração de resources, declaração e criação de eventos, criação de blocks, helpers e models, etc. Na criação de uma loja virtual você pode também tanto criar módulos para suas próprias funcionalidades como para funcionalidades já existentes no Magento, como métodos de envio ou métodos de pagamento. Cada uma dessas merece um post específico pela sua complexidade.

Nesse artigo vou explicar a criação de um módulo básico. Tudo que for necessário para começar a escrever um módulo.

(mais…)

Bruno Viana / 4 de fevereiro de 2010

Apresentando: Magento

quinta-feira, 21 de janeiro de 2010

Atualmente estamos vivendo no Brasil uma realidade que nos EUA já é fato: não basta mais somente ter sua marca na Internet. Você deve vender através dela.

Não é fácil manter uma loja online. Para isso é necessário se preocupar com várias coisas como a forma como serão realizados pagamentos, as formas como será enviado o produto, controle de fraude, e o mais importante: a plataforma que gerenciará a loja.

Antes comércio eletrônico era apenas coisa de gente grande e para manter uma plataforma era necessário uma mão de obra grande e cara. Hoje não temos mais tanto este problema com o surgimento de várias plataformas de e-commerce open source, onde a que entre elas mais se destaca é o Magento.

magento

Magento é uma ferramenta Open Source desenvolvida pela Varien, empresa que age desde 2001 no segmento de e-commerce. Ele é escrito em PHP utilizando o banco de dado MySQL o que traz muitas vantagens, pois PHP é a linguagem de programação mais utilizada na Web, possuindo uma comunidade forte e ativa.

O Magento possui duas versões: a Community e a Enterprise. A primeira é a versão gratuita, disponibilizada para a comunidade sob a licensa OSL 3.0 que em resumo diz que o software pode ser distribuído desde que se mantenha a referência de seus autores. Já a segunda versão é paga e conta com recursos avançados que a versão Community não tem. Ela é recomendada para quem necessita de um suporte rápido(dado pela própria Varien) e de recursos avançados que lojas grandes possuem. Veja um comparativo das duas versões.

Veja algumas funcionalidades que o Magento possui em sua versão Community:

  • Gerenciamento de Sites
    – É possivel gerenciar vários sites e várias lojas com apenas um Magento instalado.
    – Faça update da ferramente com apenas um clique.
  • Gerenciamento de Catálogo
    – Importação e exportação de produtos do catálogo em lote
    – Suporte a preços especiais. Por exemplo, grupo de usuário X terá 10% de desconto ou levando 5 peças cada produto fica por Y reais.
  • Navegação de produtos
    – Produtos relacionados
    – Venda cruzada
    – Venda casada
    – Tags
    – Avaliação dos usuários
    – Comparação de produtos
  • Outros
    – Suporte à SEO
    – Relatórios
    – Criação de produtos baixaveis(downloadable products)
    – Integrado com Google Analytics
    – Relatório de vendas
    Veja mais
Bruno Viana / 21 de janeiro de 2010