tenho um script que recebe uma lista de emails do banco de dados e envia os mesmos. Tenho um problema nele, e queria ver se alguém consegue me ajudar. Quando clico no botão enviar, ele carrega a pagina2.php, que tem esse código abaixo. O problema é que eu queria dar um feedback ao usuário sobre o andamento do envio, ou seja: quando clicar em enviar, a pagina carregasse e começasse a executar o script, mostrando, a cada loop, o status do envio para aquele determinado email. Tentei com flush() seguido de sleep(), mas mesmo com poucos emails, ele só mostra o status quando o script termina o loop.
Alguma idéia?
<?php
//Começa o envio
$x = 1; //varivel para contagem de nmero de e-mails enviados
$hold = 4; // quantidade de emails que devem ser enviados a cada perodo de 1 minutos
//começa o loop para os 4 e-mails
while($linha = mysql_fetch_assoc($rsEmails)) {
$to = $linha['email'];
$subject = $row_rsUltima['titulo'];
$message = $row_rsUltima['conteudo'];
$headers = "From: ".$row_rsConfigs['nomeNews']."<".$row_rsConfigs['emailNews'].">\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "Mime-Version: 1.0";
if(mail($to, $subject, $message, $headers)){
echo "Enviado com sucesso para $to<br>";
} else {
echo "Houve um problema no envio para $to<br>";
}
flush();
sleep(2);
$x++; //Soma 1 ao valor do $x
if($x == $hold) { // Verifica se o $x atingiu o limite de $hold, ou seja, 4 e-mails
sleep(60); // Se atingiu a condicao acima, o servidor segura o envio por 60 segundos
$x = 0; // e após isso, zera a contagem de $x. Inicia-se a operação novamente até o final da lista.
}
}
?>
Pergunta
carlosmandra
Pessoal,
tenho um script que recebe uma lista de emails do banco de dados e envia os mesmos. Tenho um problema nele, e queria ver se alguém consegue me ajudar. Quando clico no botão enviar, ele carrega a pagina2.php, que tem esse código abaixo. O problema é que eu queria dar um feedback ao usuário sobre o andamento do envio, ou seja: quando clicar em enviar, a pagina carregasse e começasse a executar o script, mostrando, a cada loop, o status do envio para aquele determinado email. Tentei com flush() seguido de sleep(), mas mesmo com poucos emails, ele só mostra o status quando o script termina o loop.
Alguma idéia?
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.