Os sites podem executar tarefas agendadas com o Cron

relógio

Temos vários sistemas de monitoramento redundantes em funcionamento que executam processos regularmente. Alguns correm a cada minuto, alguns uma vez por noite, dependendo do que estão fazendo. Por exemplo, podemos executar um script que exporta todos os clientes que não compram há 30 dias para enviar um cupom.

Em vez de tentar controlar tudo isso manualmente, é muito mais fácil criar jobs que são programados e executados automaticamente. Em sistemas baseados em Unix, isso é feito com o Cron. Para vocês que sabem o que estão fazendo, fiquem à vontade para educar a mim e aos leitores se eu jogar alguma desinformação.

É uma pena, mas o desenvolvedor da Web típico não está familiarizado com o Cron. Mesmo que sejam, as empresas de hospedagem na web geralmente não fornecem acesso ou suporte ao Cron. Meu anfitrião é um dos últimos - eles permitem que você use, mas não o suportam.

O que é Cron?

cron é nomeado para a palavra grega Chronos, que significa tempo. O Cron é executado em um loop contínuo para executar tarefas que são acumuladas pelo Crontab (talvez com o nome de abaulator. Essas tarefas são normalmente chamadas de Cronjobs e podem fazer referência a scripts em seu site.

Explicação do diagrama cron

Como eu configuro o Crontab

Fazer o Cron realmente funcionar pode ser um desafio, então aqui está o que aprendi e como fiz isso Se chupar:

  1. Eu configurei meu script para verificar o Twitter API para ver se alguém tinha respondido a @ifsuck. Comparei essas mensagens com as mensagens já salvas no site, inserindo as novas.
  2. Depois que o script estava funcionando, habilitei as permissões para o usuário executar o script (744) e adicionei a referência do script ao meu arquivo Cronjob - mais sobre isso depois.
  3. Então, tive que fazer o login no meu site via SSH. Em um Mac, isso levava a abrir o Terminal e digitar SSH nomedeusuario@domain.com onde nome de usuário era o nome de usuário que eu desejava usar e domínio era o site. Em seguida, fui solicitado e forneceu a senha.
  4. Em seguida, tentei executar o script diretamente do prompt de comando digitando o nome do arquivo e o caminho relativo no servidor: /var/www/html/myscript.php
  5. Assim que o fiz funcionar corretamente, adicionei o código Unix necessário na primeira linha do arquivo: #! / usr / bin / php -q . Eu acredito que isso simplesmente diz ao Unix para utilizar o PHP para executar o script.
  6. Na linha de comando do Terminal, digitei crontab (outros podem precisar digitar crontab -e) e pressione Enter ... e isso foi tudo o que foi necessário!

Sintaxe para seu arquivo Cronjob

Com relação ao item 2 acima, o Cron utiliza um esquema engenhoso para determinar quando seus scripts serão executados. Na verdade, você pode copiar e colar isso em seu Cronfile (no meu host, ele está localizado em / var / spool / cron / com o nome do arquivo igual ao meu nome de usuário).

# + —————- minuto (0 - 59)
# | + ————- hora (0 - 23)
# | | + ———- dia do mês (1 - 31)
# | | | + ——- mês (1 - 12)
# | | | | + —- dia da semana (0 - 6) (domingo = 0 ou 7)
# | | | | |
* * * * * /var/www/html/myscript.php

O acima irá executar meu script a cada minuto. Se eu quisesse que rodasse apenas uma vez por hora, colocaria quantos minutos depois da hora desejo que rodasse, então se estivesse na marca de 30 minutos:

30 * * * * /var/www/html/myscript.php

Certifique-se de definir as permissões para este arquivo como executável também! Descobri que a sintaxe, as permissões e a execução do crontab na janela do Terminal eram os fatores mais importantes. Cada vez que eu salvava o arquivo novamente, também encontrava minhas permissões precisando ser redefinidas!

ATUALIZAÇÃO: se quiser garantir que os trabalhos estejam em execução, uma maneira simples é atualizar um campo do banco de dados com a última vez em que o script foi executado. Se for menos frequente, você pode apenas criar um script de e-mail enviado para você mesmo.

Recursos adicionais do cron:

Quantas tarefas você poderia automatizar utilizando o Cron?

8 Comentários

  1. 1

    Artigo bem coberto sobre a configuração de um cron, para alguém novo em crojobs, a parte mais difícil na configuração de um cron é descobrir o intervalo de execução do cron, e é bastante comum obter um intervalo errado na primeira tentativa. Se seus cronjobs forem sensíveis ao tempo, é bom incluir alguns códigos no script para ecoar o status, de forma que você seja informado sobre o status de execução do trabalho.

  2. 2

    Oi Doug,

    Algumas coisas a serem consideradas ao trabalhar com tarefas cron.

    Primeiro, depois de algumas dezenas, você desejará ter uma IU, um banco de dados e uma sintaxe parecida com o inglês 😉

    Em segundo lugar, o cron irá disparar o trabalho na hora especificada, independentemente de a chamada anterior do trabalho ter sido concluída. Portanto, executar um trabalho uma vez por minuto que leva 2 minutos levará rapidamente à execução de vários trabalhos iguais.

    Em seguida, quase não há relatório de erro quando algo dá errado, então você precisará adicionar seu próprio relatório de erro.

    Eu abordei isso de duas maneiras:
    - faça com que o aplicativo seja disparado por meio do cron, procurando em um banco de dados para determinar o que precisa ser executado. Execute-o uma vez por minuto ou hora, dependendo do que você quiser
    - faça com que cada script crie um arquivo de 'bloqueio' em / tmp e se ele existir, não inicie novamente, isso evita trabalhos duplicados se você não os quiser
    - se o script encontrar o arquivo de bloqueio com mais de 1 hora (ou o que quer que sugira que você morreu), envie um alerta por e-mail
    - faça com que o script envie um e-mail em caso de falha no trabalho para que você saiba que algo deu errado
    - olhe para estruturas como Flux ou programadores comerciais quando suas necessidades vão além de alguns scripts

    Chris

  3. 4

    Também acrescentarei que na maioria dos sistemas Linux / Unix, “crontab -e” é o que você usa para editar seu crontab. Acho que seu host (Jumpline) está usando uma versão modificada por motivos de segurança.

  4. 5

    Ainda me lembro do primeiro dia em que conheci Cronnie. Eu tinha ouvido coisas sobre ela, que ela era confiável, sempre na hora certa, mas às vezes um pouco confusa sobre suas intenções.

    Eu descobri que isso era verdade, pois ela era um mistério completo para mim no início. Depois de perguntar por aí sobre ela, descobri rapidamente como ela gostava de operar. Agora, não consigo imaginar um dia sem ela na minha vida. Ela torna o mundano excitante e tira muitos fardos dos meus ombros.

    Com toda a seriedade, sinto que apenas arranhei a superfície com o que posso automatizar com cron jobs. Eles realmente são os melhores amigos dos desenvolvedores. Se você estiver usando alguém como o CPanel para gerenciar seu servidor, ele fornece uma interface muito mais amigável para criar crons. Completo com menus suspensos para minuto, hora, dia, mês, etc. que constrói a linha cron para você.

  5. 7

    Definitivamente, vejo que isso é algo que todo profissional de marketing deveria usar ... Há alguém que pode fornecer esse serviço porque parece um pouco “técnico” demais?

O que você acha?

Este site usa o Akismet para reduzir o spam. Saiba como seus dados de comentário são processados.