Cron Job Enviando e-mails em massa de uma só vez

2

Eu desenvolvi um script PHP no qual desejo enviar e-mails automatizados para os usuários. Eu implementou com sucesso uma tarefa cron com um script PHP que verifica um email PHP tabela de fila para mensagens pendentes. O script está funcionando bem, mas o trabalho cron é trabalhando de forma estranha: envia a mensagem aos usuários, mas 3 ou 4 de cada vez. Eu queria para enviar o email apenas uma vez. Como posso conseguir isso?

Eu uso uma condição para verificar se o email é enviado ou não, se é 0, então irá enviar e-mail e atualizar o valor para 1. Esta condição está funcionando bem. Além disso o banco de dados relativo está mostrando apenas uma entrada por usuário, então logicamente apenas um o email deve ser enviado para o usuário, mas o trabalho cron está enviando 3 ou 4 mesmos email de cada vez para o usuário.

Eu defino o cron job para cada 2 min. O comando é o seguinte:

2 * * * * wget (Http PATH to SERVER)/Utils/MailQueue.php
    
por ashutosh 27.08.2012 / 09:03

1 resposta

1

Se você acha que várias instâncias do script podem estar em execução ao mesmo tempo, use algum mecanismo de bloqueio. Coloque seu wget em um script e coloque-o em um comando flock

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, então 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 da Web.

    
por 27.08.2012 / 09:22