Agendando execução de scripts PHP
Dica publicada em PHP / Avançado
Agendando execução de scripts PHP
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
Skype Call Recorder - Como gravar áudio de chamadas do Skype
Lista de distribuições Live CD
Miniaturas de vídeo no Dolphin/KDE (video thumbnails)
Docker: /var/run/docker.sock: connect: permission denied [Resolvido]
Leitura recomendada
Como instalar o PHP5 no Debian 9 Stretch
Integração com PagSeguro no CakePHP 2.x
Livro sobre Joomla - Criando Componentes Comerciais
Comentários
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
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
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
Ex.: export EDITOR=jed
[]'s
jmoura
test
test
Muito Bom!
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?
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?
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
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
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'); ?>
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'); ?>
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.