Vous êtes sur la page 1sur 4

Utilizando Crontab/Agenda de Tarefas

com o PHP
criado por João K. em 07/02/2003 9:22pm
Sabia que é possível agendar a execução de um script PHP no
seu servidor em determinada hora do dia?

O problema fictício:
- Vamos imaginar um script chamado email_me.php, que irá
enviar uma email para você todo dia só para avisar você que o
servidor está online. Você quer o programa seja executado às
00:01AM todo o dia.

Existe duas maneiras para isso realizar a tarefa:


- Usar Crontab no sistema Unix ou o Task Scheduler/Agenda de
Tarefas no sistema Windows
- Utilizar um serviço de monitoramento de URL

Agora vamos nos concentrar na solução Crontab do Unix. Este


tutorial é uma idéia de como o mesmo funciona.

Unix/Linux

Para utilizar esse recurso você precisará saber de algumas


características do servidor onde está instalado o PHP. Existe
dois tipos de instalação do PHP:

- Compilado como um CGI (chamado arquivo binário)


- Modulo do Apache

Vamos ver como solucionar o problema de acordo com cada


tipo de instalação.

Compilado como um CGI

A diferença entre um script PHP normal e uma que será


executada como SHELL script (linha de comando, tipo aqueledo
DOS) é a chamada padrão no topo do script. Você precisará
adicionar o caminho (path) até o binário do php, que irá
possibilitar a excecução do programa. Este deve ser a primeira
linha do script e deve conter a localização do PHP executável.

exemplo:
#!/usr/local/bin/php -q
<?php
mail('meu@email.com.br', 'Servidor está ON', 'Apenas para
avisar que o servidor está online :)');
?>

Quem já utilizou Perl já viu semelhanças aqui :)

O que signfica "#!/usr/local/bin/php -q"?

- Signfica que para o arquivo ser executado é preciso o


programa PHP, localizado no servidor no diretório
/usr/local/bin/. Dependendo de onde o PHP foi instalado no
servidor você terá que alterar o caminho até o binário. O sinal "
-q ", indica que você NÃO quer o cabeçalho "HTTP content type
header" seja enviado na saída.

Tenha certeza que o arquivo mail_me.php tenha as permissões


(CHMOD: chmod +x mail_me.php) necessárias para ser
executado. Após isso, vamos adicionar o comando necessário
para o crontab. Edite o arquivo /etc/crontab/ (ou outro arquivo
que seja o seu crontab) e adicione a seguinte linha:

1 0 * * * php /caminho/ate/o/script/mail_me.php

Essa instrução indica ao sistem aque o script deve ser


executado diariamente às 00:01am.

Modulo do Apache

Se você tem o PHP instalado como um módulo do apache, a


técnica é um pouco diferente, pois não será possível utilizar o
php binário para executar o script mail_me.php no shell do
Unix. A alternativa é utilizar o mesmo princípio do serviçod e
monitoramente de URL, que irá executar o programa COMO SE
estivesse visitando o script mail_me.php pelo seu
browser/navegador. A primeira coisa é saber se você tem o
programa WGET ou o LYNX instalado no servidor.

- Wget é um programinha utilitário para baixar arquivos da


internet utilizado os protocolos HTTP ou FTP
- Lynx é um browser/navegador de internet que só mostra
texto.
O script PHP mail_me.php NÃO precisa daquela linha
(#!/usr/local/bin/php -q) no topo do arquivo. Ele será igualzinho
a outros scripts que você já criou. Edite o arquivo /etc/crontab/
(ou outro arquivo que seja o seu crontab) e adicione a seguinte
linha:

1 0 * * * lynx -dump http://www.seudominio.com.br/mail_me.php


> /dev/null

legenda:
-dump : indica que a saída, resultado da execução de
mail_me.php seja enviado para /dev/null (i.e., discarta o
resultado)

Talvez o lynx não funcione então utilize o WGET

1 0 * * * wget -q http://www.seudominio.com.br/mail_me.php

legenda:
-q : desliga a saída dos resultado do acesso ao arquivo
mail_me.php

Nota: Talvez seja necessário adicionar o caminho completo até


o progrmas lynx/wget/php

1 0 * * * /usr/bin/lynx -dump
http://www.seudominio.com.br/mail_me.php >/dev/null
1 0 * * * /usr/bin/lynx -dump
http://www.seudominio.com.br/mail_me.php >/dev/null
1 0 * * * /usr/local/bin/php -f
/caminho/ate/o/script/mail_me.php

Windows (Task Scheduler/Agenda de Tarefa)

Basicamente no Task Scheduler/Agenda de Tarefas no Windows


você adiciona uma nova tarefa, apontando para a execução do
PHP.exe para diariamente, em um horário determinado. E nas
propriedades avançadas, edite o caminho Executar para o
arquivo mail_me.php:

C:\\php\\php.exe C:\\inetpub\\www\\mail_me.php
Bem simples no Windows, como você viu acima.

Referências:

WGET
- http://www.gnu.org/software/wget/wget.html
Lynx
- http://lynx.browser.org/
Crontab
- http://uwsg.iu.edu/usail/automation/cron.html
Task Scheduler
-
http://www.microsoft.com/windows2000/techinfo/howitworks/m
anagement/task_scheduler.asp

Vous aimerez peut-être aussi