Cron Job enviando e-mails em massa de uma vez

Cron Job enviando e-mails em massa de uma vez

Desenvolvi um script PHP onde desejo enviar e-mails automatizados aos usuários. Implementei com sucesso um cron job com um script PHP que verifica uma tabela de fila de correio PHP para e-mails pendentes. O script está funcionando bem, mas o cron job está funcionando de forma estranha: ele envia o email para os usuários, mas 3 ou 4 de cada vez. Eu queria enviar o e-mail apenas uma vez. Como posso conseguir isso?

Eu uso uma condição para verificar se o e-mail foi enviado ou não, se for 0 ele enviará o e-mail e atualizará o valor para 1. Esta condição está funcionando bem. Além disso, o banco de dados relativo mostra apenas uma entrada por usuário, portanto, logicamente, apenas um email deve ser enviado ao usuário, mas em vez disso, o cron job está enviando 3 ou 4 emails iguais por vez ao usuário.

Eu configurei o cron job para cada 2 minutos. O comando é o seguinte:

2 * * * * wget (Http PATH to SERVER)/Utils/MailQueue.php

Responder1

Se você acha que várias instâncias do seu script podem estar sendo executadas ao mesmo tempo, use alguma forma de mecanismo de bloqueio. Coloque seu wget em um script e envolva-o em umrebanhocomando

2 * * * * /usr/bin/flock -n /tmp/myAppLock.lck /path/to/your/wgetscript 

Se o script MailQueue.php estiver na mesma máquina em que você está executando o cron, você não precisa do wget

2 * * * * /usr/bin/flock -n /tmp/myAppLock.lck /usr/bin/php /path/to/Utils/MailQueue.php

provavelmente será uma solução melhor, pois funcionará sem o seu servidor web.

informação relacionada