Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E ai galera,
Estou fazendo um sistema de Newsletter definitivo para um projeto, so que o servidor no qual ele estara sendo executado, so permite o disparo de 100 mensagens de e-mail por hora, gostaria de saber uma forma de o PHP disparar 100 emails a cada hora, ele tera uma lista "fila de espera" (Queue) onde estara os e-mails a serem disparados, agora me resta saber como fazer o PHP disparar estes e-mails a cada hora, ja pensei em usar CronJobs mas neste caso não será possivel, alguem tem alguma ideia ou alternativa que seja de facil implementação em qualquer servidor, mesmo que ele não tenha CronJobs.
Obrigado
>
dificil um server sem cron
Pois é, estou tentando achar um alternativa para disparar estes e-mails sem usar cron, até pensei num sleep, maaaas, deixa a página aberta expira a conexão e ai a bagaça ta feita -.-''
pelo preco que ta contrata locaweb 50 pila por mes e voce pode enviar um monte sem encomodação sem limite "por hora"
CronJobs mas neste caso não será possivel
Você afirmou isso por seu servidor não ter cron ou por você não saber uma lógica para realizar com o mesmo?
A um tempo atrás desenvolvi um sistema de mala-direta para a empresa onde trabalho, no início mandavamos com limite de envio, hoje em dia temos um servidor dedicado em que enviamos milhares de emails por hora..
Más como frisei no início, tínhamos o travamento, por utilizarmos o google apps...
Então, a lógica foi simples...
Criei um cron que rodava em uma e uma hora..
No banco de dados, era uma tabela com.. id, nome, email, status
No script, mandava listar os emails com status 0, no caso os que ainda não tinham sido enviados o email.. poderia colocar um LIMIT, e então o while... ou fazia um while com uma variável vazia.. ex..
<?php
$envios = 100;
$count = 0;
$sql = ("SELECT * FROM emails WHERE status='0' ORDER BY id ASC");
while($i = mysql_fetch_array($sql)) {
// script para enviar.. bla bla bla
$count++;
if($count == $envios) {break;}
}
?>
Só um exemplo simplérrimo para você ter uma base..
Agora se não tiver cron.. só lá.
------------------------------------------------------------
Obs.. esqueci de citar, que a cada envio sucedido ou não, eu mudava dentro do while, o status do email, de 0 para 1.. assim evitava no próximo cron, enviar para os mesmos emails... e no final de tudo todos estariam com status 1.. assim não teria emails para serem enviados.. (no meu caso, foi mais complexo, pois criei por campanha, grupos de emails, mensagens e por envios, ou seja, o script do cron, procurava se tinha algum envio para ser processado, se sim.. pegava a campanha que tinha a imagem, a mensagem que tinha o texto, e o grupo de emails que iria receber.. ou seja, podia enviar uma mesma campanha para grupos diferentes, a qualquer momento... e na administração tinha o controle de quantos emails foi enviados, quantos com erros, quantos bem sucedido.. quantos faltavam ainda.. quantos cliques o envio teve, quem clicou.. e aquela opção besta de tirar o email da mala pro usuário... estou preparando uma versão comercial, com mais funções tipo para agendar envios, envios em espera.. etc)
Abraço.
Não galera, e o seguinte, eu ja tenho um sistema desse usando Cron, mas no caso eu quero fazer um que se adapte a qualquer servidor pois ja peguei cliente com servidor hibrido e isso e uma droga, nem sempre tem as Cron's então quero evitar dependencias sacou, quero alguma alternativa a isso, não quero usar Cron, eu sei usar, so nao quero.
Não galera, e o seguinte, eu ja tenho um sistema desse usando Cron, mas no caso eu quero fazer um que se adapte a qualquer servidor pois ja peguei cliente com servidor hibrido e isso e uma droga, nem sempre tem as Cron's então quero evitar dependencias sacou, quero alguma alternativa a isso, não quero usar Cron, eu sei usar, so nao quero.
hmm... que bom.
sleep #
Acho ser a única saída..
Abraço.
>
hmm... que bom.
sleep #
Acho ser a única saída..
Abraço.
Pensei nisso tambem, mas e o tempo de conexão/execução ?
Pensei nisso tambem, mas e o tempo de conexão/execução ?
Aí você controla com o esquema que passei no outro post, brekar o while a cada x de execução.. etc.
Más o problema maior é que ainda assim, sleep não irá executar nenhum script, ele ficará a merce do cron, ou de alguém que rode a página.
Abraço.
>
Aí você controla com o esquema que passei no outro post, brekar o while a cada x de execução.. etc.
Más o problema maior é que ainda assim, sleep não irá executar nenhum script, ele ficará a merce do cron, ou de alguém que rode a página.
Abraço.
Eu sei e isso que pensei, primeiro que alguem teria que executar manualmente, segundo que o tempo de execução pode expirar e ai a m***** ta feita :upset:
Uma vez vi essa função:
http://php.net/manual/en/function.ignore-user-abort.php
a documentação só fala do php em linha de comando. não sei se funciona em web. faça um teste aí. pode resolver o problema de manter o script rodando mesmo com o browser fechado
dificil um server sem cron