Melhor maneira de enviar mais de 10.000 e-mails com PERA / Mail_Queue
-
16-09-2019 - |
Pergunta
Eu tenho um cron que gera toda a informação de correio e coloca em uma tabela de banco de dados usando $mail_queue->put(.....)
com uma opção de e-mails de exclusão após eles são enviados.
Aqui é onde eu preciso de um pouco de ajuda: Qual é a melhor maneira de enviar os e-mails depois de eu ter a informação acima? Executando o $mail_queue->sendMailsInQueue()
de imediato, usando outro trabalho cron (s) ou algo mais?
O limite do servidor, o caminho é de 100 e-mails / minuto. Atualmente o último diff CSV para Mail_Queue
não é aplicada (atualmente trabalhando com o apoio sobre isso), então eu não pode usar a opção "delay".
Eu tinha uma idéia para usar a opção $seconds_to_send
, mas ele é calculado na base de campo create_time, que não é uma grande ajuda, mas também é uma opção.
Todas as ideias e sugestões seria muito apreciada.
Solução
Pessoalmente, gostaria de seguir o caminho cron porque dá menos oportunidade para o fracasso. Diga seu servidor de correio deixa de responder ou por algum outro motivo ficar indisponível. Ou que se toda a sua rede ficar offline por algumas horas, mas os servidores ainda estão gerando e-mails. Eu digo usar a fila.
Como para a coisa demora, basta ter um serviço / cron pegar a fila a cada sessenta segundos, pop 100 e-mails e enviá-los, em seguida, saia. Você pode obter uma fila de e-mails a serem enviados, mas que vai acontecer, não importa o sistema que você escolher. A fila irá esvaziar durante as horas de pico, de qualquer maneira.
Outras dicas
uso dois scripts. um para preencher sua tabela Mail_Queue com os e-mails que você precisa para enviar e o segundo script para enviar os e-mails em pedaços de 90 mails em um ir. definir o segundo script para ser ativado a cada 2 minutos ou mais.
Você também pode apenas atualizar seu plano de hospedagem; -)
porque você não percorrer 100 e-mails e dormir por 60 segundo. Isto custa-lhe não servertime, a única desvantagem seu script é executado um pouco mais.