Agendando execução de scripts PHP

Publicado por Fábio Berbert de Paula em 12/11/2002

[ Hits: 24.939 ]

Blog: https://fabio.automatizando.dev

 


Agendando execução de scripts PHP



Uma pergunta muito frequente em fórums de discussão sobre linguagensde programação para web é a de como fazer para iniciar a execução deum script (página) automaticamente ? Uso javascript ? O PHP temalguma função que nos propicia isso ? A resposta é não, você deveutilizar o serviço de agendamento do Linux, o Cron em conjutocom um browser modo texto. Neste exemplo vamos usar o lynx, masnada o impede de usar similares, como o w3m.

Vamos supor que você tem um script que executa uma sincronização entreo seu banco de dados e um arquivo gerado por uma aplicação externa egostaria de automatizar essa tarefa ao invés de ter que acessar aURL do script via browser todos os dias.

Para simular um clique à uma URL via linha de comando, utilizamos oseguinte comando:

lynx -dump www.seudominio.com.br/meuscript.php

Com o comando em mãos podemos agendar a tarefa digitando:

crontab -e

E inserindo a linha:

0 1 * * * lynx -dump www.seudominio.com.br/meuscript.php

Que irá fazer com que o script seja executado todos os dias, às1:00 hs da manhã.

Para maiores informações sobre o uso do crontab podem ser encontradas em:

www.tldp.org/LDP/LG/issue47/misc/pollman/cron.html

Superdica: Você também pode tentar ganhar o concurso do site da Xuxaque dá prêmios à quem acessar o site o maior número de vezes com a seguinteentrada:

* * * * * lynx -dump www.planetaxuxa.com.br

Quem sabe você não ganha uma sandália melissinha ? :)

Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
Outras dicas deste autor

Palestra - A história do Viva o Linux

Como Ler e Gerar QR Code no Linux

O comando export

Criando um programa CGI com Perl

Limite de banda (bandwidth) nos comandos scp e rsync

Leitura recomendada

Gerando QR Code com PHP

Framework PHP

10 dicas de otimização em programação PHP

Tudo em Um - Site pessoal sobre PHP, HTML, CSS etc

Portabilidade de métodos construtores em PHP

  

Comentários
[1] Comentário enviado por veget em 15/12/2002 - 06:13h

Eu gostaria de saber como eu agendo uma execussão de script no CRONTAB
do servidor na internet.
por exemplo mandar um e-mail para um determinado grupo de pessoas
todo o dia 15 de todo mês as 15:00 horas.
não precisa me mostrar o script para evio de e-mail.
só queria saber como agendo isso no servidor na internet.
da para fazer por SSH?
ou eu tenho que mandar um administrador do servidor agendar no cront..
o meu servidor é o www.hostnet.com.br
obrigado pela atenção.


[2] Comentário enviado por fabio em 15/12/2002 - 12:01h

Olá veget,

Partindo do suposto que seu script para envio de e-mail está no endereço http://www.hostnet.com.br/veget/email.php, agende a seguinte entrada no cron, de acordo com a dica acima:

$ crontab -e (abre o editor de agendamento de tarefas)

0 15 15 * * lynx -dump http://www.hostnet.com.br/veget/email.php

A entrada acima significa:

- 0, todo minuto 0
- 15, todas as 15 horas
- 15, todo dia 15 do mês
- *, todos os meses
- *, todos os dias da semana

No final, isso casa com todo dia 15 do mês às 15:00 hs. Consulte o suporte técnico do seu provedor de hospedagem para saber se eles possuem o serviço cron e o browser modo texto lynx instalados. Se for um bom provedor, mesmo que eles não tenham irão disponibilizar, ou melhor, eles podem até agendar por você. Pelo menos no provedor que trabalho nós fazemos isso pelo cliente.

[]'s,
Fábio

[3] Comentário enviado por jmoura em 09/02/2003 - 17:59h

Para usar outro editor no crontab que não seja VI, digite na linha de comando: export EDITOR=seueditor

Ex.: export EDITOR=jed

[]'s
jmoura

[4] Comentário enviado por fabio em 24/04/2004 - 09:23h

test

[5] Comentário enviado por fabio em 24/04/2004 - 09:23h

test

[6] Comentário enviado por GrupoFimdeprova em 13/08/2004 - 09:03h

Muito Bom!

[7] Comentário enviado por HackSpy em 25/01/2007 - 14:02h

Fábio beleza,
cara gostaria de saber se tem como eu criar um arquivo e colocar estas linhas nele tipo um shell script e gravar em uma pasta dentro de meu espaço no servidor, ou um arquivo de tipo especial em uma pasta correta para ser executado de tempos em tempos ou terei de pedir este agendamento para o pessoal que detem do servidor?

[8] Comentário enviado por Mestro Limeira em 10/02/2009 - 12:12h

Ola, quero chamar uma página externa, tentei usando essa metodo mostrado aqui mas não funcionou....... alguem poderia me ajudar ?

eu tenho um script.php em outro site, mas quero chamar ele de outro servidor... tipo

meu servidor tem a tarefa cron, no outro onde está o script não tem.... só que preciso que execute a cada 10 minutos ele

abraços

[9] Comentário enviado por nelson_info em 05/05/2010 - 00:53h

Bom !!!
estou dormindo as 3 da manha tentando fazer um botao na minha pagina em php 5 que execute o comando no linux :

squid -k reconfigure

esteou usando centos 5.4
se alguem tiver como me ajudar, favor
fico no aguardo.


<?php

include "valida.php";
?>

<?php
$local = "/etc/squid/regras/diretoria";
if(count($_POST) > 1)
{
$arquivo = fopen("$local", "w+");
fwrite($arquivo, $_POST['arquivo']);
fclose($arquivo);
exec("sudo /usr/bin/sort $local -o $local");
exec("sudo /usr/sbin/squid -k reconfigure");
}
$arquivo = fopen("$local", "r");
?>

<?php require('cabecalho.php'); ?>

<h3>Liberar ips</h3>

<div class="text">
<p>
Área destinada a liberar ips ex: (10.0.0.50).<br />
Todos os ips listados aqui, poderão acessar tudo.

</p>
</div>

<form name="bloquear_ips" id="bloquear_ips" action="" method="post">
<textarea name="arquivo" id="arquivo" cols="75" rows="10"><?php
while(!(feof($arquivo)))
{
echo fgets($arquivo);
}
?></textarea>
<p><input type="submit" name="alterar" value="Alterar" id="alterar" /></p>
</form>

<?php require('rodape.php'); ?>



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts