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!
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.





Obrigado Thiago Belem pelos ótimos posts no seu site, você está de parabéns por compartilhar conhecimento com todos nós!!!
Só queria saber se é isso mesmo para rodar um arquivo PHP uma vez por dia:
0 6 * * * php -q /root/admin/arquivo.php
Valeu.