Hoje vi uma pergunta no fórum do iMasters bem simples mas que me deu vontade de criar um tópico aqui para respondê-la: Cron jobs, o que é?

O que são as Cron Jobs?

As Cron Jobs são como as Terefas Agendadas do Windows: são tarefas executadas automaticamente de X em X tempos… Fazendo uma analogia à vida real é quando você tira o lixo pra fora ou arruma seu quarto, provavelmente você faz isso seguindo sempre um mesmo intervalo de tempo… De 2 em 2 dias, de 1 em 1 semana e por ai vai.

O termo “Cron Job” (também só chamado de cron) está mais ligado a sistemas UNIX do que Windows mesmo… Por isso o que vou falar aqui só se encaixa no Linux. Se você usa Windows é só dar uma olhada nas tarefas agendadas que você vai ter uma interface completa para trabalhar com as Tarefas Agendadas.

Pra que usar uma Cron Job em um site/sistema online?

Acho que o propósito mais comum de uma Cron Job seja a rotina de backup… Scripts que rodam diariamente (ou até mais demorados) e que fazem o backup do site e do banco de dados.

Você pode criar uma cron para quase qualquer coisa, mas geralmente são para atualização, limpeza, backup e etc.

Mas chega de lero lero…

Como criar uma Cron Job?

Se o seu site roda em algum servidor especializado e você tem um painel de controle como o cPanel recomendo que dê uma olhada lá pois existe uma interface web prontinha para gerenciar as crons… se você não tem esse painel ou não tem acesso à ele vai ter que ir direto ao shell / terminal do seu servidor e começar a gastar o dedo.

A definição de uma cron job consiste em uma linha com 6 valores separados por espaço, assim:

minuto hora dia mes dia-da-semana linha-de-comando

Vamos a alguns exemplos de configuração de tempo antes de criar a cron em si:

Cron Job que rode todo dia as 06:00am

0 6 * * * linha-de-comando

Cron Job que rode as 12:30am de segunda e sexta

30 12 * * 1,5 linha-de-comando

Cron Job que rode a meia-noite de três em três dias

0 0 */3 * * linha-de-comando

Cron Job que rode todo dia a cada duas horas

0 */2 * * * linha-de-comando

Se você ficou com dificuldade nessa parte do tempo existem alguns geradores online de cron jobs que pode te ajudar como esse aqui. :)

A linha-de-comando

É um comando que você usaria normalmente para iniciar um script ou chamar um wget. :)

Instalando suas Cron Jobs

Agora é só salvar o conteúdo das suas crons, uma por linha em um arquivo chamado cron.txt e colocar uma linha assim no começo (primeira linha) do arquivo:

MAILTO=meuemail@meudominio.com

Isso fará com que os erros sejam enviados para o e-mail determinado.

Depois é só ir no terminal/shell e chamar o comando:

crontab cron.txt

Se nada der errado a cron foi instalada com sucesso e você pode vê-la na lista de crons que estão rodando:

crontab -l

Ufa! :D

Pra quem gostou e/ou quer saber mais ficam aqui alguns links:
» http://www.thesitewizard.com/general/set-cron-job.shtml
» http://www.aota.net/Script_Installation_Tips/cronhelp.php3


Quer copiar esse post no seu site? Você pode!

Segundo a licença da Creative Commons você pode copiar e distribuir esse conteúdo desde que faça menção ao autor original, para isso é só copiar esse código no final do artigo quando for publicá-lo em seu site:

<p>Artigo originalmente publicado em <em>8 de agosto de 2009</em> por <strong><a href="http://thiagobelem.net/" title="Thiago Belem, Desenvolvedor PHP">Thiago Belem</a></strong>: <a href="http://blog.thiagobelem.net/o-que-sao-e-como-usar-as-cron-jobs/" title="O que são e como usar as Cron Jobs?">O que são e como usar as Cron Jobs?</a></p>

A não menção ao autor original da obra implicará em cópia e/ou distribuição ilegal de propriedade intelectual, o que é crime segundo a Lei n.º 9.610.