Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
WoOo

Dúvidas ao utilizar ob_flush()/flush() dá origem a nova questão

Recommended Posts

WoOo

Viva,

Estava aqui de volta de uma função que por vezes poderá demorar muito tempo a terminar pois faz algumas queries à bd e também alguns file_get_contents() e lembrei-me de colocar algo como um "loading" só para o utilizador mais desatento e que não repare na barra de estado do browser não se "ir embora" a pensar que houve um erro ou algo do género.

Foi quando dei uma volta pelo google e vi que algum pessoal utiliza o ob_flush()/flush() para enviar uns alertas enquanto o código está a correr. Decidi fazer algumas experiências e para testar isto coloquei um ou outro sleep(). Até que reparei que ao fim de 60 segundos me era devolvido um "Maximum execution time of 60 seconds exceeded".

Algo que seria mais um preciosismo tornou-se em 2 problemas.

Logo, gostaria de saber o que me sugerem para ter um "loading" enquanto uma determinada função ainda não está concluída. Sera ob_flush()/flush() a melhor opção? Tentei já com JS mas sem sucesso.

Em relação ao outro problema do "timeout", deixou-me algo intrigado. Será que isto acontece por ter alguns sleep() a "atrasar" o processamento, é que há tempos atrás recordo-me que tinha uma função (para fazer apenas umas rotinas de manutenção) também com um tempo de processamento mesmo muito elevado (4/5 minutos) e nunca me foi devolvido nenhum timeout.

Cumprimentos,

Share this post


Link to post
Share on other sites
scorch

Quanto ao Timeout, não será do browser? Usas o mesmo browser?

E com AJAX, ficava-te melhor. Assim podias enviar a página base e algum código JS, e depois com AJAX chamavas o que te demorasse muito tempo.


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
WoOo

Viva scorch,

Do browser não pois é o mesmo, não faço ideia o porquê de nunca me ter dado erro e agora quando testava isto e lá forcei a demorar mais dá erro aos 60 segundos.

O AJAX nesta fase do campeonato é que me iria obrigar a alterar um pouco a estrutura da aplicação daí estar a não querer ir por aí pois não se trata de nada crucial, é mesmo para enviar algum tipo de alerta ao utilizador enquanto o código não correu na totalidade.

Share this post


Link to post
Share on other sites
scorch

E porque é que não imprimes o "A Carregar" no inicio da página, e quando esta estiver pronta, através de JS esconde-o. Assim não precisas do ob_flush, sleep(), etc...


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites
WoOo

Já tentei algo do género, que era ter a mensagem enquanto toda a página não fosse carregada, mas só quando terminava de correr o código em php é que aparecia a mensagem e logo de seguida desaparecia a mensagem pois a página era carregada de imediato.

Share this post


Link to post
Share on other sites
scorch

E imprimias a mensagem antes de ele começar a processar?


scorch_pp.png

PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.