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