Usar flush() e sleep() dentro de loops

294 views
Skip to first unread message

Lincoln Brito

unread,
Oct 4, 2013, 10:42:00 AM10/4/13
to php-b...@googlegroups.com
Pessoal,

Estou com um problema para retornar os dados utilizando o flush. Preciso fazer uma pausa de X segundos dentro de um loop para mostrar o progresso do envio de emails contidos num array. A cada envio deveria exibir a mensagem com o número de emails enviados até o momento.

Parece que quando utilizo o sleep dentro do loop ele não funciona muito bem, só devolve os dados quando termina.

Segue o que estou fazendo:

for( $i = 0; $i < $total; $i++){
  ...
  // Aqui faço o envio do email
  ... 

  echo "Enviado {$i} email de {$total}";

  flush();
  ob_flush();
  sleep(1);        
}

Outra coisa, utilizando o flush eu preciso habilitar a extensão implicit_flush?

Guilherme Medeiros

unread,
Oct 4, 2013, 3:25:09 PM10/4/13
to php-b...@googlegroups.com
Nao entendi muito bem a real necessidade de usar sleep e flush dentro do loop.
Mas para esse tipo de gambiarra, o PHP adicionou um recurso a sua linguagem chamado generators.
Talvez te sirva melhor



--
Você está recebendo esta mensagem porque se inscreveu no grupo "php-brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para php-brasil+...@googlegroups.com.
Para postar neste grupo, envie um e-mail para php-b...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/php-brasil.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

André Severino

unread,
Oct 4, 2013, 3:28:56 PM10/4/13
to php-b...@googlegroups.com
Guilherme, vou te falar o que meu professor me disse uma vez.

Gambiarra é muito feito, o bom é usar o nome de 'ajuste técnico' =)


--

---------------------------------------------------------------------------------------------------------------------------
André da Silva Severino
site:          http://andrewd.com.br
email:      an...@andrewd.com.br
telefone:  (19) 8847-3747
skype:       andredasilvaseverino
---------------------------------------------------------------------------------------------------------------------------
"Eu adoraria mudar o mundo, pena que eles não me fornecem o código-fonte".

Guilherme Medeiros

unread,
Oct 4, 2013, 3:31:01 PM10/4/13
to php-b...@googlegroups.com
heuheuheuheuheuehue

ajuste técnico.
quem mais faz "ajuste técnico" no Brasil ainda faz menos do que eu :P

Fábio Pinho

unread,
Oct 4, 2013, 4:27:58 PM10/4/13
to php-b...@googlegroups.com
Não é gambiarra, ele quer enviar um e-mail após o outro. Porém com 1 seg de diferença de um para o outro, por isso que ele coloca o sleep de 1 seg dentro do loop.

Guilherme Medeiros

unread,
Oct 4, 2013, 4:47:52 PM10/4/13
to php-b...@googlegroups.com
Dei uma olhada melhor agora na dúvida, a maior bronca é pq o texto não tá aparecendo do outro lado, neh isso?

Nesse caso, este tópico é interessante para você

Resumindo:
O flush do PHP não obriga o seu webserver a enviar pacotes ao cliente. E, mesmo que esses pacotes de dados sejam enviados, não obrigam ao navegador do cliente a montá-lo na tela.

Reply all
Reply to author
Forward
0 new messages