Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Alguém sabe me dizer como posso fazer para criar um loop em backugroup, sem que afete as outras áreas do site?
algo como
for ($i = 1; $i <= 10; $i++) {
$i=2;
}
Fiz isso, mas aí não carrega todo o site.
Sim, quero criar um loop infinito.
O que eu quero, é que não fiquei trancado nesse loop o processo.
Exemplo
função loop
função teste
Ele entra na função loop e fiquei no loop infinito, mas mesmo assim, passe também o processamento para as outras funções que nesse caso é a função teste.
PHP não funciona dessa maneira.
Explique exatamente o que você precisa.
Explique pra gente para que você precissa disso, como é exatamente o funcionamento do que você deseja. Porque um loop infinito não permitirá a renderização completa da página pelo server-side, portanto temos de saber oque você precisa pra mostrar-te a solução!
No meu sistema onde o usuário está logado, tem um campo que vem do BD e precisa ser atualizado a cada 5 minutos, então pensei em colocar um for com um sleep dentro para fazer a query a cada 5 minutos.
Como posso fazer essa essa query de tempos em tempos?
Você pode usar Ajax e Sessions. Na sua página, você armazena a hora e minuto que o usuário acessou a página.
Tendo essa informação é só verificar se já passaram 5 minutos desde seu acesso a página, se já tiver passado você faz a requisição Ajax, caso contrario continua como está!
Não é através de um loop que você fará isso!
Bom, aplicações RealTime tenho pouca experiência, provavelmente alguém tem alguma solução melhor que a minha.
Entendi o que você quis dizer, mas não como fazer.
Teria como dar um exemplo mais prático, como eu iria chamar essa função do ajax ou coisa do tipo? Que vais iniciar essa consulta a cada 5 minutos?
Recomendo você estudar Ajax e Sessions do PHP pra entender melhor o código:
Confesso que pensei um pouco antes de concluir o código, mas ele não é difícil. Minha dificuldade tava em quebrar a hora, ou no caso, saber a diferença entre dois horários, além da data/hora de publicação.
<?php
//Inicia sessão (deve ser a primeira linha)
session_start();
// Verifica se o usuário já acessou a página
if( ! isset($_SESSION['access_timestamp']))
{
//Define horário de acesso a página em timestamp
$_SESSION['access_timestamp'] = strtotime(date('d-m-y h:i:s'));
} $current_timestamp = strtotime(date('d-m-y h:i:s'));
//Define quantos segundos após acesso do usuário públicar o conteúdo
$publisher_after_second = 8;
//Horário em timestamp para publicar
$publisher_timestamp = $_SESSION['access_timestamp'] + $publisher_after_second;
//Verifica se o timestamp atual é maior que o de publicar
if($current_timestamp > $publisher_timestamp)
{
echo 'Realize sua requisição Ajax aqui - ou seu código Javascript';
//Redefine horário de acesso
$_SESSION['access_timestamp'] = strtotime(date('d-m-y h:i:s'));
}
}
//session_destroy(); //Destrói sessão
@Edit:
No caso para exibir o conteúdo somente após 5 minutos, altere o valor da váriavel $publisher_after_second para 300 (60x5).
Vlw, ....
Consegui!!
Não entendi a pergunta.
Mas de qualquer forma, o que você fez é criar um loop infinito.
Note que o $i sempre vai ser menor que 10, pois dentro do laço, você atribui o valor de 2 para ele.
Apague o $i=2 e formule melhor a sua pergunta.