• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

WoOo

Correr script diariamente de forma automática

16 mensagens neste tópico

Estava aqui a fazer uma pequena aplicação em PHP mas surgiu-me um problema.

Preciso que isto me corra umas linhas de código automáticamente uma vez por dia. Que sugestões me dão?

Para ficarem com uma ideia mais clara, trata-se de uma pequena consulta à BD que depois de verificar uma condição me envia emails automáticos, só que preciso que isto seja feito uma vez por dia sem influência de nenhum utilizador.

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estava aqui a fazer uma pequena aplicação em PHP mas surgiu-me um problema.

Preciso que isto me corra umas linhas de código automáticamente uma vez por dia. Que sugestões me dão?

Para ficarem com uma ideia mais clara, trata-se de uma pequena consulta à BD que depois de verificar uma condição me envia emails automáticos, só que preciso que isto seja feito uma vez por dia sem influência de nenhum utilizador.

Abraço

Deves ter de usar um cronjob :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que não é preciso ir a tanto basta um pequena aplicação em fiquem em sleep durante h horas e depois desse tempo executa o script php.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que não é preciso ir a tanto basta um pequena aplicação em fiquem em sleep durante h horas e depois desse tempo executa o script php.

Usando um loop infinito?

while(1){
// código a executar
sleep(50000);
}

Isso é só desperdiçar memória...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que não é preciso ir a tanto basta um pequena aplicação em fiquem em sleep durante h horas e depois desse tempo executa o script php.

Usando um loop infinito?

while(1){
// código a executar
sleep(50000);
}

Isso é só desperdiçar memória...

desperdiçar memória porquê?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Penso que não é preciso ir a tanto basta um pequena aplicação em fiquem em sleep durante h horas e depois desse tempo executa o script php.

Usando um loop infinito?

while(1){
// código a executar
sleep(50000);
}

Isso é só desperdiçar memória...

desperdiçar memória porquê?

Porque vais ter o processo "on hold" a ocupar-te memória (por mais insignificante que seja).
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando fazes Sleep o programa fica "morto" como se não tive-se a correr e acredito que de uma forma ou outra o referido cronjob deve fazer algo do género.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

assim à primeira vista vais ter sempre que ter um processo a controlar quando é que vais executar o código, por isso se não for este processo a ficar em memória vai ser outro.

além do mais, o SO consegue saber que o processo está adormecido e certamente que quando for preciso memória será um dos primeiros a ir para a swap.

não sei qual é a tua sugestão, mas parece-me que mesmo esses programas como o cronjob devem funcionar à base de sinais (tal como a função sleep).

pelo menos em C não me parece uma solução assim tão má, em PHP não sei como é que isso ia funcionar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tipo, o cron está sempre a correr, é um processo que vais ter sempre que ter em memória. Ele simplesmente de x em x tempo, vai criar o processo do PHP que dps é terminado por ele. Usando um loop infinito, vais ter o cron e o script sempre em memória, esteja ou não activo :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tipo, o cron está sempre a correr, é um processo que vais ter sempre que ter em memória. Ele simplesmente de x em x tempo, vai criar o processo do PHP que dps é terminado por ele. Usando um loop infinito, vais ter o cron e o script sempre em memória, esteja ou não activo :)

Ciclos infinitos ocupam é CPU, não mistures com memória. É verdade que fica lá sempre o endereço mas também não é preciso exagerar... :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ciclos infinitos ocupam é CPU, não mistures com memória. É verdade que fica lá sempre o endereço mas também não é preciso exagerar... :D

Porque vais ter o processo "on hold" a ocupar-te memória (por mais insignificante que seja).

:)

E em relação à memória, n tava a falar do ciclo mas sim dos dados que ficam "on hold" (variáveis, etc).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imagina que fazes um while com um sleep tal como foi descrito ele não vai ocupar memoria com o ciclo ! o ciclo só vai correr de x em x tempo entre esse tempo a unica memoria ocupado é da processo e não acredito que o cronjob ocupe menos memoria que um micro programa escrito em C com meia dúzia de linha e que até fica em sleep. Para alem disso o script php não vai ficar em memoria porque depois de ser executada ele termina a sai.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imagina que fazes um while com um sleep tal como foi descrito ele não vai ocupar memoria com o ciclo ! o ciclo só vai correr de x em x tempo entre esse tempo a unica memoria ocupado é da processo e não acredito que o cronjob ocupe menos memoria que um micro programa escrito em C com meia dúzia de linha e que até fica em sleep. Para alem disso o script php não vai ficar em memoria porque depois de ser executada ele termina a sai.

Lol, o cron está sempre em memória e executa os cronjobs. :D E enquanto o programa está em sleep(), todas as variáveis continuam em memória embora sejam redefinidas ou não a cada iteração pelo que escreveste no loop. Ou seja, se nunca fizeres replace das variáveis ou não as "limpares", a cada iteração a memória ocupada é maior. :)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porquê tanta trabalheira se podes simplesmente usar cronjob ?

Se tiveres cPanel normalmente tens lá uma secção para isso :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu cá também usaria cronjobs, que é mesmo para isso que serve... Não esquecer que o sleep() guarda um processo httpd (assumindo uso do apache, o mais provável), na configuração que uso são logo ~8MB de memória. Poderá eventualmente ser mais (tenho uma config relativamente simples).

Cron para a frente!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora