Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, é o seguinte:
Eu tenho um cliente que me pediu um sistema onde ele tem a lista de emails do newsletter e ele quer enviar um email para todos de uma só vez, meio que como funciona com e-mail marketing, até aí tudo ok, mil maravilhas, o problema é: e se ele mudar de página, fechar a aba ou o navegador ? Obviamente o script para de rodar.
A ideia é que o navegador não fique esperando uma resposta para continuar, simplesmente ele dá o comando e dá uma mensagem ao usuário de que os e-mails estão sendo enviados, o servidor vai executar, enviar e-mail por e-mail e posteriormente vai gerar um log (até ai ok).
Ou seja, o que eu preciso é que o script de envio dos emails rode no background do servidor, que o servidor seja responsável por enviar os emails e não o usuário propriamente dito, sendo assim o usuário pode trocar de página, fechar o navegador, desligar o computador, que o sistema vai enviar email por email e quando o usuário entrar novamente, caso já tenha sido finalizado, o sistema mostra pra ele quais foram enviados e se algum teve problema.
Na empresa onde trabalho temos um sistema parecido com esse, como o sistema faz comunicação com várias API's ao mesmo tempo, se tivesse que ficar esperando uma resposta ia demorar muito, então, foi feito exatamente o que eu disse a cima, o usuário não vê o script rodando, ele só recebe uma mensagem genérica, essa parte do sistema não fui eu quem fez, então não consegui entender muito bem, eu sei que foi usado o comando exec() e acho que rola algum comando no terminal do linux.
Ficou grande a explicação mas acho que deu pra entender, conseguem me ajudar com uma ideia pra solucionar isso ?
>
Entendi, mas eu nunca fiz nada parecido com isso, o que eu já fiz foi uma crontab, que na aplicação que eu usei todo dia no horário X disparava uma crontab, que mandava um e-mail para todos os funcionário da empresa, porém era sempre a mesma mensagem para a mesma lista de e-mail, ninguém precisava mandar esse e-mail, ele disparava sozinho, porém no seu caso não é uma mensagem genérica com os mesmo contatos né, olha da uma pesquisada sobre crontab caso não conheça, pode ser que taaalvez te ajude.
Alguns links sobre o assunto:
https://pt.wikipedia.org/wiki/Crontab
http://virtual01.lncc.br/~licht/linux/sistema.crontab.configurar.html
Cron não vai me ajudar, não é programado e sim a hora que o usuário disparar o comando pra uma determinada lista de emails
http://php.net/manual/pt_BR/function.ignore-user-abort.php
Lembrando que isso depende de algumas variáveis do próprio servidor.
>
http://php.net/manual/pt_BR/function.ignore-user-abort.php
Lembrando que isso depende de algumas variáveis do próprio servidor.
Ficaria algo como a baixo ?
ignore_user_abort(1);
foreach(){
// Envia e-mails
}
Vou testar
Entendi, mas eu nunca fiz nada parecido com isso, o que eu já fiz foi uma crontab, que na aplicação que eu usei todo dia no horário X disparava uma crontab, que mandava um e-mail para todos os funcionário da empresa, porém era sempre a mesma mensagem para a mesma lista de e-mail, ninguém precisava mandar esse e-mail, ele disparava sozinho, porém no seu caso não é uma mensagem genérica com os mesmo contatos né, olha da uma pesquisada sobre crontab caso não conheça, pode ser que taaalvez te ajude.
Alguns links sobre o assunto:
https://pt.wikipedia.org/wiki/Crontab
http://virtual01.lncc.br/~licht/linux/sistema.crontab.configurar.html