Como agendar tarefas de vários sites Drupal usando Drush e PHP

Hoje aprendi um truque para lá de animal: usar crontab do Linux! Hehehe. Essa façanha é comum aos cabeçudos do pinguim, mas eu ainda não tinha pego direito o negócio. Hoje eu peguei, e somando o crontab com Drush e um script PHP que eu escrevi, achei uma utilidade mega foda para servidores que rodam vários sites!

Esse meu script roda as tarefas agendadas de vários sites ao mesmo tempo via CLI, usando Drush. Eu agendei a execução do mesmo para ser executada de hora em hora. Mas para não tornar o post complicado, decidi falar de cada assunto separadamente.

Agendando tarefas no Linux: usando o cron

O cron é um programa que permite ao usuário agendar tarefas no Linux. Com ele você pode agendar facilmente uma tarefa para ser agendada em um dia específico, ou periodicamente, o qual é o nosso caso.

Para trabalhar com o cron o usuário dispõe do comando crontab, que permite ao usuário editar o arquivo crontab que contém os comandos agendados, assim como as regras de tempo que definem quando os mesmos serão executados.

Para aprender como editar o arquivo crontab, há um tutorial bem simples e fácil de compreender aqui. Caso não saiba utilizar o crontab, dê uma lida nesse tutorial (é pequenininho!) antes de continuar a leitura desse post.

Executando tarefas agendadas de um site Drupal com o Drush

Essa parte com certeza é a mais simples! Para executar as tarefas agendadas de um site Drupal via CLI, navegue até a pasta do seu site e execute o seguinte comando:

drush cron

Pronto! Agora é esperar para o Drush concluir as tarefas do site, que podem ser tarefas como indexar conteúdos nos índices da busca, publicar e despublicar conteúdos agendados, gerar backups do site, etc.

Dica: caso não tenha o Drush instalado no seu Linux, leia o meu post sobre como instalar o Drush em um minuto.

Agendando tarefas agendadas de múltiplos sites Drupal com PHP

Finalmente, o pulo do gato! rs. Aqui é onde eu uso o script que criei para executar as tarefas agendadas de vários sites, um após o outro, via CLI.

Baixe o arquivo anexo a esse post e descompacte-o. Uma pasta cron_runner será criada. Agende a execução desse script para ser executada a cada hora. Para isso, edite o crontab e adicione a seguinte regra:

0 *    * * *    php -f /path/to/cron_runner/cron_runner.php

Pronto. Agora o seu Linux irá executar o script no primeiro minuto de cada hora.

--

Obs: este script foi escrito a nível de estudos pessoais. Não aconselho o uso do mesmo em ambiente de produção e nem tampouco garanto seu funcionamento, visto que não efetuei nenhum tipo de testes nele. Caso decida usá-lo em produção, tenha certeza de saber o que você está fazendo.

Anexos: 

Comentar