Atualizar uma página usando PHP

148

Como posso atualizar uma página usando PHP periodicamente? Se eu não puder fazer isso pelo PHP, qual é o melhor cenário recomendado?

Aan
fonte
estamos falando de sincronização (você encontra uma situação em que deseja atualizar durante a análise do script php) refrehs (a atualização meta funcionaria bem) ou sobre a atualização contínua assíncrona de uma página (mais como javascript / ajax)?
Najzero 12/09

Respostas:

275

Você pode fazer isso com PHP:

header("Refresh:0");

Ele atualiza sua página atual e, se você precisar redirecioná-la para outra página, use o seguinte:

header("Refresh:0; url=page2.php");
Peter Mortensen
fonte
1
A atualização não é um cabeçalho oficial, mas é suportado por muitos navegadores desde o Netscape Navigator. Isso significa que você terá que testar para garantir que seu público use navegadores de suporte.
Patanjali
5
Usar 0 martelará continuamente seu servidor e / ou seu cache local, especialmente se você tiver imagens na página. Se você precisar atualizar apenas as informações na tela, como preços das ações, mas não usá-las em um formulário ou em javascript, talvez use uma tag iframe apontando para uma página com apenas as informações atualizadas e com um atraso apropriado para como atual a informação deve estar.
Patanjali
1
Isso causa o erro "Os cabeçalhos já foram enviados" no meu código ... existe outra maneira?
DBS
Confira aqui uma solução; TLDR não, você pode produzir qualquer coisa antes de usarheader();
adrian
109

No PHP você pode usar:

$page = $_SERVER['PHP_SELF'];
$sec = "10";
header("Refresh: $sec; url=$page");

Ou apenas use JavaScript window.location.reload().

AboQutiesh
fonte
2
O cabeçalho Yazana ('Localização:') é usado para redirecionar o usuário para qualquer URL, não é possível atualizar a página usando-o.
Patriks
2
Pratik. Você está errado. você pode realmente usar o cabeçalho ("refresh:") para atualizar uma página
131
6
Você pode fazer as duas coisas, embora eu prefira sem tempo de espera com:header("Location: ".$_SERVER['PHP_SELF']);
John Magnolia
4
Uma observação sobre esta solução: Se o seu site estiver implementando algum tipo de roteamento agradável ou reescrita de URL (ou seja, quase qualquer estrutura por padrão), você encontrará $_SERVER['PHP_SELF']o caminho do script verdadeiro, e não o URL real que você vê no seu navegador. Nesse caso, tente usar $_SERVER['REQUEST_URI'].
BadHorsie
18

Você pode atualizar uma página periodicamente usando PHP:

<?php
    header("refresh: 3;");
?>

Isso atualizará a página a cada três segundos.

131
fonte
15

Isso é simplesmente possível com o header () no PHP:

header('Refresh: 1; url=index.php');
Kamlesh
fonte
12

Encontrei duas maneiras de atualizar o conteúdo do PHP:

1. Usando a metatag HTML :

echo("<meta http-equiv='refresh' content='1'>"); //Refresh by HTTP 'meta'

2. Usando a taxa de atualização do PHP:

$delay = 0; // Where 0 is an example of a time delay. You can use 5 for 5 seconds, for example!
header("Refresh: $delay;"); 
Thanos
fonte
2
//Refresh by HTTP META => // Refresh by HTML METAtambém parece uma resposta copiada de cima.
Php_coder_3809625
11

Além de todas as maneiras PHP de atualizar uma página, a página também será atualizada com a seguinte metatag HTML:

<meta http-equiv="refresh" content="5">

Consulte Meta refresh - "atualize automaticamente a página da web ou o quadro atual após um determinado intervalo de tempo"

Você pode definir o tempo dentro do contentvalor.

Mathlight
fonte
3
esta será atualizada a cada 0 segundos - provavelmente não o que você está indo para :)
Warren
3
sim, estou comentando esta resposta: sempre há espaço para melhorias. E você está certo, você pode definir contentigual a qualquer valor em segundos - o meu comentário ainda vale a pena notar que uma atualização de 0 segundos não é provavelmente o que você está indo para :)
Warren
2
@ Mathlight e quem mais reclama de comentários atrasados. Só porque você seguiu em frente, um leitor futuro pode ter acabado de experimentar o problema, e sua resposta / comentário, juntamente com os que estão atrasando o desafio, ainda podem ser relevantes para eles.
Patanjali 23/10
1
@ Mathlight Eu não sei por que as pessoas pensam que só porque uma postagem é antiga, não pode haver valor em comentar sobre ela. Você deve se desfazer desse pensamento.
Mark Kramer
O que você quer dizer com "Construir na declaração if de" ?
Peter Mortensen
2

header('Location: .'); parece atualizar a página no Chrome, Firefox, Edge e Internet Explorer 11.

Ben Guest
fonte
Como deveria (uma vez): php.net/manual/en/function.header.php : "O segundo caso especial é o cabeçalho" Location: ". Ele não apenas envia esse cabeçalho de volta ao navegador, mas também retorna um código de status REDIRECIONAR (302) para o navegador, a menos que o código de status 201 ou 3xx já tenha sido definido. "
Sz.
Mas não foi isso que o OP pediu. Eu ainda votei, porque percebi que só depois, desculpe. É Natal em breve! :)
Sz.
1

Você não pode fazer isso em PHP . Depois que a página é carregada, o PHP morre e fica fora de controle.

Você tem poucas opções:

  • Use JavaScript
  • Use a metatag de atualização, <meta http-equiv="refresh" content="5">

Acho que a meta tag de atualização é a mais fácil e conveniente.

JvdBerg
fonte
63
Errado, você pode atualizar uma página periodicamente usando PHP, se você usar a função de cabeçalho do PHP assim: header ("refresh: 3;");
131
1
Você pode atualizar uma página no PHP usando o cabeçalho. Além disso, o uso do META REFRESH NÃO é ideal para SEO.
TheCarver
1
Eu acho que isso está errado, sempre há uma maneira: eu acho que se ele quiser atualizar a página com php depois de algum tempo pode enviar uma solicitação ajax para uma página que tenha o código de atualização php. mas em tudo sua resposta é boa
Mohammad Kermani
2
Errado! Corrija sua resposta ... Na verdade isso pode ser feito com PHP
M_R_K
1
Isso está completamente errado! De todas as maneiras possíveis. Isso pode ser feito pelo PHP, por cabeçalhos (atualização) e por redirecionamentos acionados. Parece que todas as outras respostas são melhores.
Budimir Grom 21/02
1

Você pode atualizar usando JavaScript. Em vez da atualização completa da página, você pode fornecer o conteúdo a ser atualizado em uma div. Então, usando JavaScript, você pode atualizar apenas essa div específica e funciona mais rápido que a atualização completa da página.

Anoop
fonte
2
Se você incluir o código, esta resposta poderá ser um pouco mais compreensível.
I.Am.A.Guy
1

PHP é uma linguagem do lado do servidor; portanto, você não pode atualizar a página com PHP, mas o JavaScript é a melhor opção para atualizar a página:

location.reload();

O método Visit reload () da localização .

Patriks
fonte
1
Hahahah ok então, como você deseja. Verifique isso => ​​( wrongDomain.epl.fanxt.com ), ele não especificou que atualizará a página 'depois' de ser carregada. Se a decisão de atualizar foi tomada durante a execução do código php, o php certamente pode atualizar e pode escolher depois de quantos segundos para atualizar.
Mohammed Joraid 15/02
@ Ahmad, você não pode considerar como um recurso do PHP, é um recurso do HTML. Então, na classificação que você está fazendo, definindo o cabeçalho de resposta html. E foi por isso que eu disse que você não pode fazer isso com PHP. Outra coisa, você não pode atualizar a página após o carregamento / quando necessário. Sim, você pode configurá-lo por alguns segundos ou etc, como você respondeu.
Patriks
ah, os detalhes técnicos. Acha que é possível usar o cabeçalho para atualizar uma imagem específica? Ou seja, se você transmitir a imagem através do php de grosso.
EZFrag
Realmente @EZFrag, eu não sei, você pode me dizer como isso é possível?
Patriks
Ah sim, encontrei. No começo, tentei uma marca de imagem normal. Sem sorte. Mas então substituí a tag de imagem pela tag iframe e pronto. A imagem é atualizada automaticamente. Isso vai ajudar muito em algumas das minhas imagens de status na página :) Para quem está se perguntando, eu estou servindo a imagem via php junto com o cabeçalho de atualização, definindo o arquivo php como o src do iframe.
EZFrag
1

Faça eco da metatag assim:

URL é aquele para o qual a página deve ser redirecionada após a atualização.

echo "<meta http-equiv=\"refresh\" content=\"0;URL=upload.php\">";
Prakash Patil
fonte
Mas a questão não é sobre redirecionamento. É sobre atualização.
Peter Mortensen
1

Adicionar esta meta tag no PHP pode ajudar:

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=' . $location . '">';
Siddharth Shukla
fonte
3
Embora esse trecho de código possa resolver a questão, incluir uma explicação realmente ajuda a melhorar a qualidade da sua postagem. Lembre-se de que você está respondendo à pergunta dos leitores no futuro e essas pessoas podem não saber os motivos da sua sugestão de código.
DimaSan
Mas a questão não é sobre redirecionamento. É sobre atualização.
Peter Mortensen
0

Um truque é adicionar um número aleatório ao final do URL. Dessa forma, você não precisa renomear o arquivo todas as vezes. Por exemplo:

echo "<img src='temp.jpg?r=3892384947438'>"

O navegador não o armazenará em cache enquanto o número aleatório for diferente, mas o servidor da Web o ignorará.

0x45
fonte
2
Como isso atualiza uma página periodicamente? Você está respondendo a outra resposta?
Peter Mortensen