Como agendar um script PHP usando Crontab no Linux


Como agendar um script PHP usando Crontab no Linux

Como agendar um script PHP no Linux ? Essa foi a pergunta que recebi e gostaria de apresentar algumas opções para os leitores do E-tinet.

Quando trabalhamos com Linux existem muitas opções para executar uma mesma função, e isso é o mais legal. Assim como eu descrevi no Ebook do Curso Linux Ubuntu onde temos muitas formas de instalar softwares por exemplo.

Em um resumo rápido, para agendar tarefas no Linux podemos utilizar o Cron.

APRENDA A DOMINAR O LINUX

Aprenda a dominar o LINUX de uma vez por todos, pegue sua cópia

  • Ferramentas para instalar softwares adicionais
  • Shell do LINUX passo a passo, e muito mais...

agendar-script-php-crontab

O problema que temos hoje é:

Eu tenho um script php no meu servidor, que pode ser executado a partir da linha de comando e também pode ser acessado a partir do navegador usando o servidor web Apache. Eu gostaria de executar este script php a cada 1 hora. Como posso programar isso com Cron em ambiente Linux.

Então vamos ver alguns métodos para agendar o seu script php como crontab no linux.

# 1: Executar o script usando php a partir do crontab

Assim como você chama seu script no shell do Linux, pode usar o executável do PHP e chamar o script a partir do seu crontab.

Para executar “meu-script.php” a cada 1 hora faça o seguinte:

# crontab -e
00 * * * * /usr/local/bin/php /home/pedrodelfino/meu-script.php

#2: Executar o script php usando uma URL

Com a opção 01 ( acima) existe um problema, ela só poderá ser utilizada se você tem acesso ao shell do Linux, mas vamos imaginar que seu script em PHP está em um servidor onde você não tem acesso via shell,  somente ftp para salvar os arquivos.

Leia também ...   Monitoramento de Sistema Linux - Como fazer e 4 Ferramentas que você poderá usar

Então veja essa opção:

Se o seu script  poderá ser acessado apenas pela URL podemos usar o curl, wget  ou o Lynx para configurar o crontab.

A configuração do crontab abaixo executa o script PHP (a cada hora), chamando ele através  da URL usando o navegador de modo texto Lynx.

O Lynx por padrão abre uma URL no modo interativo. Temos a opção -dump que faz o lynx executar e apenas mostrar a saída padrão.

00 * * * * lynx -dump https://e-tinet.com/meu-script.php

Claro que nesse exemplo, podemos usar qualquer computador com Linux para executar esse agendamento.

A configuração a seguir executa o script php (a cada 5 minutos), chamando a URL usando CURL. Usando a opção “curl -o”, você também irá direcionar a saída do seu script para um arquivo temporário, como mostrado abaixo

*/5 * * * * /usr/bin/curl -o temp.txt https://e-tinet.com/meu-script.php

Vamos ver um exemplo agora para executar o script PHP (a cada 10 minutos), chamando a URL usando o WGET. A opção -q indica o modo de execução, a opção  “-O temp.txt” indica que a saída será enviada para o arquivo temporário.

*/10 * * * * /usr/bin/wget -q -O temp.txt https://e-tinet.com/meu-script.php

Então se você tem uma aplicação escrita em PHP que necessita de agendamento o cron é a opção, usando a segunda forma mostrada aqui nesse artigo é mais vantajoso pois podemos usar qualquer computador com Linux para fazer o agendamento, já a primeira opção é mais indicada para quem tem acesso ao shell do servidor Web.

Uma dica importante, tome muito cuidado com agendamento de 5 em 5 minutos, dependendo do tempo de retorno do script isso poderá tornar o seu servidor lento, principalmente se está sendo agendado direto com o executável do PHP.

Então é isso, por hoje é só.

Pedro Delfino

Sobre pedrodelfino

Trabalha a mais de 14 anos com administração de sistemas LINUX, dedicado em ensinar novos profissionais a atuar com servidores. Saiba mais aqui. "Caso queira participar de uma aula online comigo utilize o formulário Acima"