View Full Version : Sugestoes sobre timer
Armadillo 22-11-2007, 11:14 Boas.
[Não sabia se havia de colocar este post em WebDev, Programaçao ou em *nix world, por isso se acharem melhor mover o tópico, força nisso...]
Criei um script php q me gera um ficheiro HTML puro e duro.
Preciso q o meu script corra no servidor, digamos, de 30 em 30 segundos.
Como devo fazer isto?
O SO é uma versao Debian modificada.
Obrigado
lothar_m 22-11-2007, 11:27 talvez possas usar o cron, embora nao tenha a certeza sobre a sua utilização com scripts de php...
creio que existem threads sobre isso no forum.
tanto o google como a wikipedia têm montes informação sobre o cron.
Armadillo 22-11-2007, 11:29 A minha duvida é se, sendo um servidor de producao, se deverei usar o cron ou outro metodo de correr o php.
Obrigado.
LinuxWarrior 22-11-2007, 11:44 A minha duvida é se, sendo um servidor de producao, se deverei usar o cron ou outro metodo de correr o php.
Obrigado.
Usa o cron sempre que puderes... o problema podera estar se a operação for muito pesada, mas se a operação vai ocorrer, em intervalos de tempo entao o cron e o teu melhor amigo :D
slack_guy 22-11-2007, 15:17 Se esse script é o que estou a pensar ( :-) ) a cron não é solução. Tanto quanto sei, o intervalo mínimo na cron é de 1 minuto. Para esse script _eu_ faria qualquer coisa do género:
Script 1:
cria o processo e escreve o PID num ficheiro;
while (1) {
faz_o_que_te_mando;
sleep 30;
}
Script 2 (a executar a partir da cron, de x em x minutos - atenção: se calhar não precisa de correr as 24 horas do dia e os 7 dias da semana):
if (ficheiro) {
le ficheiro;
if (PID existe na tabela de processos) {
exit;
}
}
executa script 1;
Para simplificar, podes resumir isto a um só script, chamado com argumentos diferentes. Fica à tua imaginação.
Armadillo 22-11-2007, 16:32 Outra ideia baseada na tua e na minha (mais uma vez... :p):
-por o cron a correr o php a partir das 9:00
-no php, por um loop em que só termine ás 18:30, com sleep de 30 segundos.
O q t parece?
slack_guy 22-11-2007, 22:10 parece-me que tens de ter forma de verificar de tempos a tempos se o script está em execução. Durante um dia de trabalho acontecem muitas coisas :-)
*/2 * * * * <comando>
^^ todos os 30 segundos! :D
Armadillo 23-11-2007, 09:39 r3pek, podias ser mais explicito?
obrigado
Faz com que a cada meio minuto (30 segundos), a todas as horas, todos os dias (quer do mes, quer da semana) irá executar o <comando>, que vai ser definido por ti :)
Armadillo 23-11-2007, 15:40 fazendo
*/4 * * * * <comando>, executa de 15 em 15 segundos (e por ai em diante), certo?
slack_guy 23-11-2007, 16:19 */2 * * * * <comando>
^^ todos os 30 segundos!
A esta hora, já deves ter notado que isto executa o script de 2 em dois minutos ;-)
(O minuto é a unidade mais pequena, não é divisível)
Teste:
# crontab -e
*/2 * * * * date >> /home/me/teste.txt
......
$ cat /home/me/teste.txt
Fri Nov 23 16:14:01 WET 2007
Fri Nov 23 16:16:01 WET 2007
...
O mais aproximado seria (até tenho medo de escrever... Please, don't do this!)
* * * * * /scripts/meu_script
* * * * * sleep 30; /scripts/meu_script
O melhor, é mesmo fazeres como te sugeri antes.
|
|