Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá...preciso fazer com que ao realizar uma solicitação em um site, ocorra o envio de um e-mail para várias contas, supondo umas 100. Isso seria por ajax, gostaria de saber como fazer isso sem que o usuário que fez a solicitação fique esperando que os 100 e-mails sejam enviados. Pesquisei e com o cron do linux de hospedagem poderia deixar um script rodando de tempo em tempo e ir enviando os e-mails, mas isso não posso fazer pois a hospedagem não permite tenha acesso ao cron. Procurando mais ainda encontrei uma tecnologia chamada node.js, a qual pode ser executada do lado do servidor de forma assincrona, encontrei tambem a nodemaier, para envio de e-mail. Tudo isso para que os e-mails sejam enviados e o usuário solicitante não fique esperando a tela retornar após o envio. Gostaria de saber se alguem já passou por esse problema ou alguma dica.
Desde já agradeço.
Acho que nem tem problema nisso, quando o user clicar em enviar, os dados serão passados via post pelo ajax.
Você pode fazer uma função para pegar a resposta.
Mas você não é obrigado a fazer essa função que recebe a resposta, deixa a página rodando do outro lado e exibe uma mensagem pro user de Ok e pronto, está feito.
>
Acho que nem tem problema nisso, quando o user clicar em enviar, os dados serão passados via post pelo ajax.
Você pode fazer uma função para pegar a resposta.
Mas você não é obrigado a fazer essa função que recebe a resposta, deixa a página rodando do outro lado e exibe uma mensagem pro user de Ok e pronto, está feito.
Entendi, mas pode ocorrer erro com o ajax caso tenha alguma intervenção do usuário, ou por exemplo, exista um tempo limite para a requisição, 100 e-mails deve demorar um pouco, será que existe algum tempo limite que pare a execução?
100 emails é pouco para um servidor profissional, vai rapidinho.
Por segurança você pode colocar no topo do script que envia os emails esse código:
//Remove o limite de tempo
set_time_limit(0);
Por questões de segurança, sugiro fazer um Daemon. Ele é mais "suficiente" para esse tipo de exigência (script rodando em back).
>
Por questões de segurança, sugiro fazer um Daemon. Ele é mais "suficiente" para esse tipo de exigência (script rodando em back).
Entendi, é bem o que eu gostaria também, mas não posso fazer isso, pois a hospedagem não permite esse tipo de acesso.
Por isso queria saber uma outra sugestão. Mas agradeço a resposta.
Se você não pode fazer com CRON e não tem problema com um outro "idioma", pode sim fazer com Node.js, PERL ou Shell.
Para o Node, podes utilizar o Forever. Dê uma olhada aqui.