Aktualisieren Sie eine Seite mit PHP

148

Wie kann ich eine Seite mit PHP regelmäßig aktualisieren? Wenn ich es nicht mit PHP machen kann, welches ist das am besten empfohlene Szenario?

Aan
quelle
Sprechen wir über Synchronisierung (Sie stoßen auf eine Situation, in der Sie eine Aktualisierung durchführen möchten, während Ihr PHP-Skript analysiert wird) Refrehs (Meta-Aktualisierung würde gut funktionieren) oder über asynchrone kontinuierliche Aktualisierung einer Seite (eher wie Javascript / Ajax)?
Najzero

Antworten:

275

Sie können es mit PHP tun:

header("Refresh:0");

Es aktualisiert Ihre aktuelle Seite. Wenn Sie sie auf eine andere Seite umleiten müssen, verwenden Sie Folgendes:

header("Refresh:0; url=page2.php");
Peter Mortensen
quelle
1
Aktualisieren ist kein offizieller Header, wird jedoch von vielen Browsern seit Netscape Navigator unterstützt. Das bedeutet, dass Sie testen müssen, um sicherzustellen, dass Ihre Zielgruppe unterstützende Browser verwendet.
Patanjali
5
Wenn Sie 0 verwenden, wird Ihr Server und / oder Ihr lokaler Cache kontinuierlich gehämmert, insbesondere wenn Sie Bilder auf der Seite haben. Wenn Sie nur Informationen auf dem Bildschirm aktualisieren müssen, z. B. Aktienkurse, diese Informationen jedoch nicht in einem Formular oder aus Javascript verwenden müssen, verwenden Sie möglicherweise ein Iframe- Tag, das auf eine Seite verweist, auf der nur die Informationen aktualisiert werden, und mit einer Verzögerung, die der Vorgehensweise entspricht Strom der Informationen muss sein.
Patanjali
1
Dies verursacht den Fehler "Header bereits gesendet" in meinem Code ... gibt es einen anderen Weg?
DBS
Suchen Sie hier nach einer Lösung. tldr, Sie können nichts ausgeben, bevor Sie verwendenheader();
Adrian
109

In PHP können Sie verwenden:

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

Oder verwenden Sie einfach JavaScript window.location.reload().

AboQutiesh
quelle
2
Der Yazana-Header ('Location:') wird verwendet, um Benutzer zu einer beliebigen URL umzuleiten. Sie können die Seite damit nicht aktualisieren.
Patriks
2
Pratik. Sie liegen falsch. Sie können in der Tat Header ("refresh:") verwenden, um eine Seite zu aktualisieren
131
6
Sie können beides tun, obwohl ich keine Wartezeit bevorzuge mit:header("Location: ".$_SERVER['PHP_SELF']);
John Magnolia
4
Ein Hinweis zu dieser Lösung: Wenn Ihre Site eine Art nettes Routing oder URL-Umschreiben implementiert (dh standardmäßig fast jedes Framework), erhalten Sie möglicherweise $_SERVER['PHP_SELF']den wahren Skriptpfad und nicht die tatsächliche URL, die Sie in Ihrem Browser sehen. Versuchen Sie in diesem Fall $_SERVER['REQUEST_URI']stattdessen,.
BadHorsie
18

Sie können eine Seite mit PHP regelmäßig aktualisieren:

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

Dadurch wird die Seite alle drei Sekunden aktualisiert.

131
quelle
15

Das ist mit header () in PHP einfach möglich :

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

Ich habe zwei Möglichkeiten gefunden, um PHP-Inhalte zu aktualisieren:

1. Verwenden des HTML- metaTags:

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

2. Verwenden der PHP-Aktualisierungsrate:

$delay = 0; // Where 0 is an example of a time delay. You can use 5 for 5 seconds, for example!
header("Refresh: $delay;"); 
Danke
quelle
2
//Refresh by HTTP META => // Refresh by HTML METAauch dies sieht aus wie eine von oben kopierte Antwort.
php_coder_3809625
11

Neben allen PHP-Möglichkeiten zum Aktualisieren einer Seite wird die Seite auch mit dem folgenden HTML-Meta-Tag aktualisiert:

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

Siehe Meta-Aktualisierung - "Aktualisiert die aktuelle Webseite oder den aktuellen Frame nach einem bestimmten Zeitintervall automatisch."

Sie können die Zeit innerhalb des contentWertes einstellen .

Mathlight
quelle
3
Dies wird alle 0 Sekunden aktualisiert - wahrscheinlich nicht das, was Sie wollen :)
Warren
3
Ja, ich kommentiere diese Antwort: Es gibt immer Raum für Verbesserungen. Und Sie haben Recht, Sie können contentjeden Wert in Sekunden gleichsetzen - mein Kommentar ist immer noch erwähnenswert, dass eine Aktualisierung von 0 Sekunden wahrscheinlich nicht das ist, was Sie wollen :)
Warren
2
@ Mathlight & wer sich sonst noch über verspätete Kommentare beschwert. Nur weil Sie vielleicht weitergezogen sind, hat ein zukünftiger Leser das Problem möglicherweise gerade erst erlebt, und Ihre Antwort / Ihr Kommentar sowie alle verspäteten, die es in Frage stellen, sind für sie möglicherweise immer noch relevant.
Patanjali
1
@Mathlight Ich bin mir nicht sicher, warum die Leute denken, dass es keinen Wert haben kann, einen Beitrag zu kommentieren, nur weil er alt ist. Sie sollten über dieses Denken verfügen.
Mark Kramer
Was meinst du mit "Build in the if-Anweisung von" ?
Peter Mortensen
2

header('Location: .'); scheint die Seite in Chrome, Firefox, Edge und Internet Explorer 11 zu aktualisieren.

Ben Gast
quelle
Wie es sollte (einmal): php.net/manual/en/function.header.php : "Der zweite Sonderfall ist der Header" Location: ". Dieser Header wird nicht nur an den Browser zurückgesendet, sondern auch zurückgegeben einen REDIRECT (302) -Statuscode für den Browser, es sei denn, der Statuscode 201 oder 3xx wurde bereits festgelegt. "
Gr.
Aber darum hat das OP nicht gebeten. Ich habe es immer noch positiv bewertet, weil mir das erst danach klar wurde, sorry. Es ist bald Weihnachten! :)
Gr.
1

Sie können es nicht in PHP tun . Sobald die Seite geladen ist, stirbt PHP und ist außer Kontrolle geraten.

Sie haben einige Möglichkeiten:

  • Verwenden Sie JavaScript
  • Verwenden Sie das Meta-Tag "Aktualisieren". <meta http-equiv="refresh" content="5">

Ich denke, dass das Aktualisierungs-Meta-Tag das einfachste und bequemste ist.

JvdBerg
quelle
63
Falsch, Sie können eine Seite regelmäßig mit PHP aktualisieren, wenn Sie die Header-Funktion von PHP wie folgt verwenden: header ("refresh: 3;");
131
1
Sie können eine Seite in PHP mithilfe der Kopfzeile aktualisieren. Auch die Verwendung von META REFRESH ist NICHT ideal für SEO.
TheCarver
1
Ich denke, das ist falsch, es gibt immer einen Weg: Ich denke, wenn er die Seite nach einiger Zeit mit PHP aktualisieren möchte, kann er eine Ajax-Anfrage an eine Seite senden, die den Aktualisierungscode von PHP hat. aber überhaupt ist Ihre Antwort gut
Mohammad Kermani
2
Falsch ! Bitte
korrigieren
1
Das ist völlig falsch! In jeder Hinsicht. Dies kann durch PHP, durch Header (Aktualisierung) und durch ausgelöste Weiterleitungen erfolgen. Es scheint, dass alle anderen Antworten besser sind.
Budimir Grom
1

Sie können mit JavaScript aktualisieren. Anstelle der vollständigen Seitenaktualisierung können Sie den zu aktualisierenden Inhalt in einem div angeben. Mit JavaScript können Sie dann nur dieses bestimmte Div aktualisieren, und es funktioniert schneller als die vollständige Seitenaktualisierung.

Anoop
quelle
2
Wenn Sie den Code einfügen, ist diese Antwort möglicherweise etwas verständlicher.
I.Am.A.Guy
1

PHP ist eine serverseitige Sprache, daher können Sie die Seite nicht mit PHP aktualisieren, aber JavaScript ist die beste Option, um die Seite zu aktualisieren:

location.reload();

Die Methode reload () von visit Location .

Patriks
quelle
1
Hahahah ok dann, wie du willst. Check this out => ( falseDomain.epl.fanxt.com ) Er hat nicht angegeben, dass er die Seite 'nach' dem Laden aktualisieren wird. Wenn die Entscheidung zum Aktualisieren während der Ausführung des PHP-Codes getroffen wurde, kann PHP sicherlich aktualisieren und wählen, nach wie vielen Sekunden aktualisiert werden soll.
Mohammed Joraid
@Ahmad, Sie können nicht als eine Funktion von PHP betrachten, es ist eine Funktion von HTML. In der Sortierung setzen Sie also den HTML-Antwortheader. Und deshalb habe ich gesagt, dass man es mit PHP nicht machen kann. Außerdem können Sie die Seite nach dem Laden / bei Bedarf nicht aktualisieren. Ja, Sie können es für einige Sekunden oder so einstellen, wie Sie geantwortet haben.
Patriks
oh die technischen Details. Denken Sie, dass es möglich ist, den Header zu verwenden, um ein bestimmtes Bild zu aktualisieren? Das ist, wenn Sie das Bild durch die PHP von grob streamen.
EZFrag
Wirklich @EZFrag, ich weiß nicht, kannst du mir sagen, wie es möglich ist?
Patriks
Ah ja, habe es gefunden. Zuerst habe ich ein normales Bild-Tag ausprobiert. Kein Glück. Aber dann habe ich das Bild-Tag durch das Iframe-Tag und voila ersetzt. Das Bild wird automatisch aktualisiert. Dies wird bei einigen meiner Statusbilder auf der Seite sehr hilfreich sein :) Für diejenigen, die sich fragen, stelle ich das Bild zusammen mit dem Aktualisierungsheader über PHP bereit und setze die PHP-Datei als Quellcode des Iframes.
EZFrag
1

Echo das metaTag wie folgt:

Die URL ist die URL, zu der die Seite nach der Aktualisierung umgeleitet werden soll.

echo "<meta http-equiv=\"refresh\" content=\"0;URL=upload.php\">";
Prakash Patil
quelle
Bei der Frage geht es jedoch nicht um die Weiterleitung. Es geht um Auffrischung.
Peter Mortensen
1

Das Hinzufügen dieses Meta-Tags in PHP kann helfen:

echo '<META HTTP-EQUIV="Refresh" Content="0; URL=' . $location . '">';
Siddharth Shukla
quelle
3
Während dieses Code-Snippet die Frage lösen kann, hilft eine Erklärung wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage in Zukunft für Leser beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen.
DimaSan
Bei der Frage geht es jedoch nicht um die Weiterleitung. Es geht um Auffrischung.
Peter Mortensen
0

Ein Trick besteht darin, am Ende der URL eine Zufallszahl hinzuzufügen. Auf diese Weise müssen Sie die Datei nicht jedes Mal umbenennen. Z.B:

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

Der Browser speichert es nicht zwischen, solange die Zufallszahl unterschiedlich ist, aber der Webserver ignoriert es.

0x45
quelle
2
Wie aktualisiert das eine Seite regelmäßig? Antworten Sie auf eine andere Antwort?
Peter Mortensen