Agendando execução de scripts PHP

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

[ Hits: 24.964 ]

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

Listar as máquinas/dispositivos online em determinada rede

Cliente Google Authenticator para Linux (extensão Chrome)

Vim - configuração de acordo com o tipo de arquivo

Limite de banda (bandwidth) nos comandos scp e rsync

Como checar se sua placa possui sinal físico de rede

Leitura recomendada

Funções com nomes variáveis em PHP, isso existe sim!

Framework PHP

Gerando documentação de projetos PHP com o DocBlox

PHP + Shell script

Instalando Zend Framework

  

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