Jump to content

Correr script diariamente de forma automática


WoOo
 Share

Recommended Posts

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

Link to comment
Share on other 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 👍

Daniel Correia

Link to comment
Share on other 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...

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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).

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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.

Link to comment
Share on other 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 😄

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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... 😄

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other 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... 😄

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).

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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.

I haven’t lost my mind; it’s backed up on DVD somewhere!

Link to comment
Share on other 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. 😄 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. 🙂

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other 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!

"Pensa positivo: tudo pode piorar"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.