Aggiorna una pagina usando PHP


148

Come posso aggiornare periodicamente una pagina usando PHP? Se non riesco a farlo tramite PHP, qual è lo scenario migliore consigliato?


stiamo parlando di sincronizzazione (si verifica una situazione in cui si desidera aggiornare durante lo script php viene analizzato) refrehs (meta refresh funzionerebbe bene) o asincrono aggiornamento continuo di una pagina (più come javascript / ajax)?
Najzero,

Risposte:


275

Puoi farlo con PHP:

header("Refresh:0");

Aggiorna la pagina corrente e, se è necessario reindirizzarla a un'altra pagina, utilizzare quanto segue:

header("Refresh:0; url=page2.php");

1
Refresh non è un'intestazione ufficiale, ma è supportato da molti browser da Netscape Navigator. Ciò significa che dovrai testare per assicurarti che il tuo pubblico utilizzi i browser di supporto.
Patanjali,

5
L'uso di 0 martellerà continuamente il tuo server e / o la tua cache locale, specialmente se hai immagini sulla pagina. Se hai solo bisogno di aggiornare le informazioni sullo schermo, come i prezzi delle azioni, ma non utilizzare tali informazioni in un modulo o da JavaScript, forse usa un tag iframe che punta a una pagina con solo le informazioni che vengono aggiornate e con un ritardo adeguato a come corrente l'informazione deve essere.
Patanjali,

1
Ciò causa l' errore "Headers già inviati" nel mio codice ... esiste un altro modo?
DBS,

Controlla qui per una soluzione; tldr, non puoi produrre nulla prima di usareheader();
adrian il

109

In PHP puoi usare:

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

O semplicemente usa JavaScript window.location.reload().


2
L'intestazione Yazana ('Posizione:') viene utilizzata per reindirizzare l'utente a qualsiasi URL, non è possibile aggiornare la pagina utilizzandola.
Patriks,

2
Pratik. Tui hai torto. puoi effettivamente usare l'intestazione ("aggiorna:") per aggiornare una pagina
131

6
Puoi fare entrambe le cose, anche se preferisco non aspettare con:header("Location: ".$_SERVER['PHP_SELF']);
John Magnolia,

4
Una nota su questa soluzione: se il tuo sito sta implementando una sorta di routing o riscrittura URL (ovvero quasi tutti i framework per impostazione predefinita) che potresti trovare $_SERVER['PHP_SELF']ti dà il vero percorso dello script e non l'URL effettivo che vedi nel tuo browser. In tal caso, prova a utilizzare $_SERVER['REQUEST_URI']invece.
BadHorsie,

18

Puoi sicuramente aggiornare periodicamente una pagina usando PHP:

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

Questo aggiornerà la pagina ogni tre secondi.


15

Questo è semplicemente possibile con header () in PHP:

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

12

Ho trovato due modi per aggiornare il contenuto di PHP:

1. Utilizzando il metatag HTML :

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

2. Utilizzo della frequenza di aggiornamento di 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 METAanche questa sembra una risposta copiata dall'alto.
php_coder_3809625

11

Oltre a tutti i modi PHP per aggiornare una pagina, la pagina verrà aggiornata con il seguente meta tag HTML:

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

Vedi Meta refresh - "aggiorna automaticamente la pagina Web o il frame corrente dopo un determinato intervallo di tempo"

È possibile impostare l'ora all'interno del contentvalore.


3
questo si aggiorna ogni 0 secondi - probabilmente non è quello che stai cercando :)
warren

3
sì, sto commentando questa risposta: c'è sempre spazio per miglioramenti. E hai ragione, puoi impostare contentuguale a qualsiasi valore in secondi - il mio commento vale ancora la pena notare che un aggiornamento di 0 secondi probabilmente non è quello che stai cercando :)
Warren,

2
@Mathlight e chiunque altro si lamenta di commenti in ritardo. Solo perché potresti essere passato, un futuro lettore potrebbe aver riscontrato il problema e la tua risposta / commento, insieme a quelli in ritardo che lo sfidano, potrebbero essere ancora rilevanti per loro.
Patanjali,

1
@Mathlight Non sono sicuro del motivo per cui la gente pensa che solo perché un post è vecchio non può avere alcun valore nel commentarlo. Dovresti eliminare questo pensiero.
Mark Kramer,

Cosa intendi con "Build in the if statement from" ?
Peter Mortensen,

2

header('Location: .'); sembra aggiornare la pagina in Chrome, Firefox, Edge e Internet Explorer 11.


Come dovrebbe (una volta): php.net/manual/en/function.header.php : "Il secondo caso speciale è l'intestazione" Location: ". Non solo restituisce questa intestazione al browser, ma restituisce anche un codice di stato REDIRECT (302) per il browser a meno che non sia già stato impostato il codice di stato 201 o 3xx. "
Sz.

Ma non è quello che l'OP ha richiesto. L'ho ancora votato perché mi sono reso conto che solo dopo mi dispiace. È Natale presto! :)
Sz.

1

Non puoi farlo in PHP . Una volta caricata la pagina, PHP muore ed è fuori controllo.

Hai alcune opzioni:

  • Uso JavaScript
  • Utilizza il meta tag di aggiornamento, <meta http-equiv="refresh" content="5">

Penso che il meta tag di aggiornamento sia il più semplice e conveniente.


63
Sbagliato, puoi aggiornare periodicamente una pagina usando PHP, se usi la funzione header di PHP in questo modo: header ("refresh: 3;");
131,

1
Puoi aggiornare una pagina in PHP usando l'intestazione. Inoltre, l'utilizzo di META REFRESH NON è l'ideale per il SEO.
TheCarver

1
Penso che sia sbagliato, c'è sempre un modo: penso che se vuole aggiornare la pagina con php dopo qualche tempo può inviare una richiesta Ajax a una pagina che ha un codice di aggiornamento di php. ma la tua risposta è buona
Mohammad Kermani,

2
Sbagliato ! Correggi la tua risposta ... In effetti questo può essere fatto con PHP
M_R_K il

1
Questo è completamente sbagliato! In ogni modo possibile. Può essere fatto da PHP, dalle intestazioni (aggiorna) e dai reindirizzamenti attivati. Sembra che tutte le altre risposte siano migliori.
Budimir Grom,

1

Puoi aggiornare usando JavaScript. Invece dell'aggiornamento completo della pagina, puoi dare il contenuto da aggiornare in un div. Quindi utilizzando JavaScript puoi aggiornare solo quel particolare div e funziona più velocemente dell'aggiornamento completo della pagina.


2
Se includi il codice, questa risposta potrebbe essere un po 'più comprensibile.
I.Am.A. Acquista

1

PHP è la lingua lato server, quindi non è possibile aggiornare la pagina con PHP, ma JavaScript è l'opzione migliore per aggiornare la pagina:

location.reload();

Il metodo visit reload Location () .


1
Hahahah ok allora, come desideri. Dai un'occhiata a questo => ( wrongDomain.epl.fanxt.com ) non ha specificato che aggiornerà la pagina 'dopo' che è stata caricata. Se la decisione di aggiornare è stata presa durante l'esecuzione del codice php, allora sicuramente php può aggiornare e può scegliere dopo quanti secondi aggiornare.
Mohammed Joraid,

@Ahmad, non puoi considerare come una caratteristica di PHP, è una caratteristica dell'HTML. Quindi nell'ordinamento che stai facendo impostando l'intestazione della risposta html. Ed è per questo che ho detto che non puoi farlo con PHP. Un'altra cosa, non è possibile aggiornare la pagina dopo il caricamento / quando necessario. sì, puoi impostarlo per alcuni secondi o ecc. come hai risposto.
Patriks,

oh i tecnicismi. Pensi che sia possibile utilizzare l'intestazione per aggiornare un'immagine specifica? Cioè se si esegue lo streaming dell'immagine attraverso il php di grossolano.
EZFrag

Davvero @EZFrag, non lo so, puoi dirmi come è possibile?
Patriks,

Ah sì, l'ho trovato. All'inizio ho provato un normale tag immagine. Senza fortuna. Ma poi ho sostituito il tag immagine con il tag iframe e voilà. L'immagine si aggiorna automaticamente. Questo mi aiuterà molto con alcune delle mie immagini di stato sulla pagina :) Per coloro che si stanno chiedendo, sto servendo l'immagine tramite php insieme all'intestazione di aggiornamento, impostando il file php come src dell'iframe.
EZFrag

1

Eco il metatag in questo modo:

L'URL è quello in cui la pagina deve essere reindirizzata dopo l'aggiornamento.

echo "<meta http-equiv=\"refresh\" content=\"0;URL=upload.php\">";

Ma la domanda non riguarda il reindirizzamento. Si tratta di aggiornare.
Peter Mortensen,

1

L'aggiunta di questo meta tag in PHP potrebbe aiutare:

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=' . $location . '">';

3
Mentre questo frammento di codice può risolvere la domanda, inclusa una spiegazione aiuta davvero a migliorare la qualità del tuo post. Ricorda che stai rispondendo alla domanda per i lettori in futuro e che queste persone potrebbero non conoscere i motivi del tuo suggerimento sul codice.
DimaSan

Ma la domanda non riguarda il reindirizzamento. Si tratta di aggiornare.
Peter Mortensen,

0

Un trucco è aggiungere un numero casuale alla fine dell'URL. In questo modo non è necessario rinominare il file ogni volta. Per esempio:

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

Il browser non lo memorizzerà nella cache finché il numero casuale è diverso, ma il server Web lo ignorerà.


2
Come si aggiorna periodicamente una pagina? Stai rispondendo a un'altra risposta?
Peter Mortensen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.