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?


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");

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().


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.



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;"); 

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.


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.


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.


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.


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 .


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\">";

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 . '">';

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á.


2
Como isso atualiza uma página periodicamente? Você está respondendo a outra resposta?
Peter Mortensen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.