Pergunta

Eu tenho que fez uma página que irá enviar e-mail para assinantes da newsletter. Há mais de 14 mil assinantes. Eu quero usar o php mail () função para enviar e-mail para eles. Mas eu estou com medo de que ele não será capaz de enviar e-mail para todos os assinantes para php 30sec limite max_execution_time. A sua não é possível testar o quanto e-mail pode ser enviado através do envio de um email de teste para os assinantes. Então, eu quero saber quanto e-mail podem ser enviados com a função mail () em 30 limite segundo max_execution_time. Será muito útil se você pode me responder.

também uma outra questão - É tempo de execução mysql também é contar em php?

Apache versão 2.2.13 (Unix) PHP versão 5.2.11

Foi útil?

Solução

A configuração php max_execution_time é personalizável. segundos 30 é o padrão, mas você pode configurá-lo para 0 segundos para nenhum limite de tempo de execução em tudo. Use set_time_limit () .

set_time_limit(0);

Se você fizer isso, você deve ser capaz de enviar todo o seu e-mail.

Por favor, tenha cuidado sobre o envio de mais de um e-mail para o mesmo servidor de correio por segundo. Você não quer ficar na lista negra.

Outras dicas

Você deve executar este a partir de um cronjob ou gerar uma tarefa de fundo ou usar outra coisa melhor adequado para trabalhos em lote.

Você pode obter 14000 e-mails em 30sec se o seu servidor de correio é rápido o suficiente, mas o que acontece quando você começa um pouco mais assinantes e ele pára de funcionar corretamente?

Talvez você pode definir um sinalizador no banco de dados para cada usuário, em seguida, redefinir o sinalizador como seu e-mail é enviado por uma tarefa em segundo plano. Isso vai ajudar a duplicatas evitar e assim por diante se houver um problema com o servidor de email.

Isso depende de tantas variáveis ??que uma única resposta não é possível. Fatores incluem:

  1. A velocidade da CPU
  2. A largura de banda disponível a partir do sistema de envio para o MTA
  3. A capacidade do MTA para aceitar e-mails

A única maneira de descobrir é a experimentá-lo.

Eu tive esse problema exato um tempo atrás em um dos meus projetos. A solução é isolar o envio de email a partir do próprio site.

I codificado uma pequena classe que seria chamado para enviar um e-mail. Ele seria passado um email templated, que seria então armazenar no banco de dados em uma fila mail. No back-end, eu tinha um trabalho cron que chama um script mailer cada X segundos. Script olha para a fila de banco de dados para e-mails, pega um número X da fila para tentar enviar (ordenados por timestamp in), em seguida, iria tentar a entrega. Supondo que nenhum erro foi gerado, roteiro iria marcar a mensagem como enviado. O passo seguinte seria a de limpar todos os e-mails da fila que foram enviados e mais velho do que X dias (mantido para a exploração madeireira).

A esperança que é útil.

A sério, se você quiser enviar o mesmo e-mail para as pessoas dez do seu mailapp normal, você normalmente criar mails idênticos dez ou você apenas enviar o email, uma vez adicionando os destinatários à lista de envio?

Editar: Se a resposta for "Eu enviá-lo uma vez", eu acho que você deve olhar nessa direção aqui também (é mesmo descrito como enviar a vários destinatários de http://www.php.net/mail )

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top