Vou ser sincero contigo, a pouco tempo eu precisei fazer um esquema pra uma empresa de envios SMS, e foi pancada, eles enviam na média de 6milhões de mensagens por mês.
A solução que tive que utilizar, criar processos em background utilizando a função exec() ou shell_exec() pra isso. Alguns processos rodam por 2 ou 3 horas, mas consomem em média 5MB de RAM. Como eu utilizo um VPS pude usar esse recurso, mas eu sei que servidores compartilhados não oferecem isso, e se você tentar fazer direto no browser, irá expirar o tempo limite do processo, que está entre 30 e 90 segundos. Confesso que esse é um problema sério, pois um envio de 24mil emails pode consumir um bom tempo, e não vejo outra solução a não ser abrindo processos no servidor. Uma boa possíbilidade é você agendar o envio utilizando um cron, e fazer isso utilizando o comando PHP direto, e não o wget, isso também pode funcionar muito bem. Você pode agendar uma tarefa para ser executada a cada 30min, 10min, ou de hora em hora, verificando se há envios agendados, e então rodar o comando PHP para o script de envio, dae você pode fazer SELECTs no banco de dados em lotes paginados, de 1000 em 1000, isso fará o consumo de memória baixar bastante. Se você fizer SELECT * FROM tabela, e retornar de uma vez os 24mil registros, sempre estourará a memória. Falow! 2009/7/21 Vinicius Cruz <[email protected]> > Pois é, Robson > Vi isso numa outra thread da lista. Alguma ideia para o caso de dividir em > lote, sem que o usuário que está enviando os emails, tenha que ficar > clicando em "enviar próximo lote"? > > Dentro do foreach que pega os emails do banco, coloquei um echo e exit, pra > parar na primeira linha, e eu retornar o total de memória usada, mas ele já > dá o erro fatal. > > Uma solução que pensei, não sei se muito elegante, era colocar o processo > recursivo com paginação. Assim, no caso do método que envia, teria o > parâmetro $paginacao (a cada 1000 email, por exemplo). Enquanto não terminar > o envio de emails, dá um redirect para o próprio método para a próxima > página. Ao término, volta para o painel da newsletter. > > É viável essa solução? Só preciso ter cuidado pra não cair em loop > infinito. =) > > Vinicius > > 2009/7/21 Robson Mendonça <[email protected]> > > Olá, >> eu uso 48MB nos meus servidores de deploy, e normalmente tento manter >> baixo o consumo de memória por processo. Quando se aumenta muito esse valor, >> dois ou três processos acabam pendurando o servidor. >> >> O mais interessante seria você dividir esses 24mil emails em lotes, com um >> intervalinho de tempo entre cada lote, para o servidor pegar folêgo. >> >> É só uma opinião, tentar resolver problema de software jogando mais >> hardware em cima, pode causar problemas irreverssíveis num futuro próximo, >> principalmente se esses 24mil email podem virar 30mil, 40mil, e outros mil >> mais. >> >> Falow! >> >> >> 2009/7/21 Vinicius Cruz <[email protected]> >> >>> 128Mb é um valor bom? >>> >>> 2009/7/21 Marcelo Ferreira <[email protected]> >>> >>> Provavelmente não, senão o pessoal iria usar até o talo. Faz como o >>>> pessoal falou, entre em contato com a empresa que hospeda o site, para ver >>>> se é possível aumentar a memória. >>>> >>>> 2009/7/21 Vinicius Cruz <[email protected]> >>>> >>>> Poderia usar o ini_set("memory_limit", "128M"); ? >>>>> 2009/7/21 Newton Wagner <[email protected]> >>>>> >>>>> Não sei se estou viajando aqui, mas segundo essa mensagem de erro, o >>>>>> seu servidor tem apenas 64MB de memória disponível para o PHP. >>>>>> >>>>>> 67108864 bytes / 1024 (kb) / 1024 = 64mb >>>>>> >>>>>> Você não acha que isso é muito pouco não? :D. Estou cmo o Anderson, >>>>>> entre em contato com a administração do servidor onde está hospedado o >>>>>> site do seu cliente. >>>>>> >>>>>> 2009/7/20 Anderson Unsonst <[email protected]>: >>>>>> > velho esse servidor é confiavel ? pede ao suporte deles uma analise >>>>>> de >>>>>> > performace >>>>>> > >>>>>> > _______________________________________________ >>>>>> > Lista mailing list >>>>>> > [email protected] >>>>>> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>>>>> > >>>>>> > >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Newton Wagner >>>>>> >>>>>> skype: newtonwagner >>>>>> msn/gtalk: [email protected] >>>>>> >>>>>> http://www.newtonwagner.net/ >>>>>> - http://www.diariodaselva.com.br/ >>>>>> >>>>>> _______________________________________________ >>>>>> Lista mailing list >>>>>> [email protected] >>>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Lista mailing list >>>>> [email protected] >>>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> Lista mailing list >>>> [email protected] >>>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>>> >>>> >>> >>> _______________________________________________ >>> Lista mailing list >>> [email protected] >>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>> >>> >> >> >> -- >> Robson Mendonça >> http://www.myweboncreate.com >> CTO at LEC/UFRGS (Cognitive Studies Lab) >> LEC - Laboratório de Estudos Cognitivos - UFRGS >> Centro de Excelência Sun para Desenvolvimento de Soluções de TI para >> Educação >> Fundação Pensamento Digital - www.pensamentodigital.org.br >> >> _______________________________________________ >> Lista mailing list >> [email protected] >> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >> >> > > _______________________________________________ > Lista mailing list > [email protected] > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br > > -- Robson Mendonça http://www.myweboncreate.com CTO at LEC/UFRGS (Cognitive Studies Lab) LEC - Laboratório de Estudos Cognitivos - UFRGS Centro de Excelência Sun para Desenvolvimento de Soluções de TI para Educação Fundação Pensamento Digital - www.pensamentodigital.org.br
_______________________________________________ Lista mailing list [email protected] http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

