Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   PHP Seite aktuallisieren (https://www.delphipraxis.net/158641-php-seite-aktuallisieren.html)

xxsasch4xx 24. Feb 2011 18:36

PHP Seite aktuallisieren
 
Ich habe auf der Seite lima-city.de einen FTP Server angelegt, indem ich meine PHP Sripte ablegen kann. Ich habe jetzt das Problem, dass wenn ich etwas im PHP Code ändere und dann überspeichere, dann wird es aber beim erneuten Aufrufen der Seite erst aktualisiert, wenn man wirklich auf den Button Aktualisieren (im Firefox Browser) oder auf F5 drückt.

Wollte jetzt wissen ob es vielleicht einen Befehl gibt mit dem man die F5 Taste auslöst, damit der Benutzer nicht immer selber auf F5 drücken muss, wenn ich etwas ändere.
Die anderen Internet Benutzer wissen ja auch erst gar nicht, wenn ich etwas an der PHP Datei ändere.

Eine Möglichkeit wäre es ja, dass ich den kompletten PHP Script noch einmal erneut in die FTP Datenbank ablege, aber da gibt es bestimmt eine andere Möglichkeit oder?

DeddyH 24. Feb 2011 18:41

AW: PHP Seite aktuallisieren
 
Du darfst Dich nicht an Delphi orientieren. Dein PHP-Script liegt auf dem Server, aufgerufen wird es von einem Client (im Normalfall ein Browser). Woher soll denn bitteschön der Client auf dem Rechner in Kleinkleckersdorf wissen, dass Du auf dem Server in Timbuktu ein neues Script eingespielt hast? Du könntest höchstens ein Javascript (welches per Definitionem clientseitig läuft) in Dein PHP-Script einbinden, das die Seite nach X Sekunden erneut abruft, was dann quasi dem Druck auf F5 entspricht.

xxsasch4xx 24. Feb 2011 18:50

AW: PHP Seite aktuallisieren
 
Ja mit Java hab ich vorher noch nicht gearbeitet. Bin erst ganz neu beim Internet programmieren aktiv geworden, davor hab ich immer mit Delphi und C gearbeitet.
Geht das nicht, dass ich durch nen PHP Befehl beim aufrufen der Seite jedes mal irgendeine Taste auslöse?
Also, dass der immer am anfang die F5 Taste drückt wenn die Seite aufgebaut wird. Möglichts ohne Java.

himitsu 24. Feb 2011 18:50

AW: PHP Seite aktuallisieren
 
JavaScript und nicht Java ... das sind zwei gänzlich unerschiedliche Dinge.
(gut, Java ginge auch, aber das ist dann wie mit Kanonen auf Spatzen schießen)


Um es anders zu sagen:
PHP sendet nicht, es wird abgerufen, also der CLient ist der, welcher sagt was wann aufgerufen werden soll.
Das Server (PHP) sendet dem Clienten (Browser) dann quasi nur noch das Angerforderte zu.

Luckie 24. Feb 2011 18:57

AW: PHP Seite aktuallisieren
 
Ich glaube, du hast immer noch nicht begriffen, wie PHP funktioniert. Und ich bin mir ziemlich sicher, dass du auf deinem Webspace keinen FTP Server eingerichtet hast.

Noch mal hier die Kurzfassung, um die Begrifflichkeiten mal zu klären. Da steht ein Rechner irgendwo in einem Rechenzentrum. Dieser ist mit dem Internetverbunden, welches auch nur aus Rechner besteht. Die Details spare ich mir jetzt mal, wie das funktioniert. Auf dem Rechner, wo deine Dateien liegen ist ein FTP Server installiert, welcher dazu dient Dateien, die du mit einem FTP Client an den Rechner schickst anzunehmen und auch auszuliefern. Dies geschieht mit Hilfe des FTP Protokolls. Das FTP Protokoll dient nur dazu Dateien zwischen Rechnern auszutauschen. Damit ein Surfen möglich ist, darunter verstehe ich das Anzeigen von Dateien, üblicherweise im HTML Format, mit Links, die auf weitere Dateien auf anderen oder dem selben Rechner verweisen und so im Browser aufgerufen werden können, ist ein so genannter Webserver erforderlich, der die Anfragen, also den Aufruf, beantwortet und die angeforderte Datei an den Browser ausliefert.

Wir nun ein PHP Skript aufgerufen, wird dieses an das PHP Modul des Webservers weitergeleitet. Dieses Modul führt das Skript aus und liefert eine Ausgabe an den Webserver, der diese Ausgabe, dann an den aufrufenden Browser weiterleitet. Üblicherweise erzeugt ein PHP Skript auch nur HTML Code, aber eben dynamisch. letztendlich bekommt der Browser auch nur HTML Code zu sehen. Dass er dein
Code:
echo "Hallo";
anzeigt liegt daran, dass Browser auch einfachen Text anzeigen können, denn nichts anderes wird da übertragen.

OK, wenn wir das verstanden haben, sollte klar sein, dass der der Benutzer des Browsers die erneute Auslieferung der Daten selber anstoßen und das Skript erneut aufrufen muss, um die aktuellen Daten zu bekommen. Dies kann man jedoch auch automatisieren indem man ein Autorefresh per HTML Metatags auslöst: http://www.de.hscripts.com/tutorials...utorefresh.php Du müsstest mit deinem PHP Skript also dynamisch eine HTML Seite mit dem entsprechendem Metatag erzeugen.
Dies macht aber nur Sinn, wenn alle paar Minuten daten auf der Seite aktualisiert werden. Wie zum Beispiel ein Chat oder Börsenkurse oder ähnliches.

Dies könnte zum Beispiel so aussehen:
Code:
<?php
  echo "<html>";
  echo "<head>">
  echo "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">";
  echo "<title>Seitentitel</title>;
  echo "</head>";
  echo "<body>";
  echo "<p>hallo</p>";
  echo "</body>";
  echo "</html>";
?>

xxsasch4xx 24. Feb 2011 19:36

AW: PHP Seite aktuallisieren
 
Wenn ich die Datei unbennene dann gehts auch. :wink:

Luckie 24. Feb 2011 19:43

AW: PHP Seite aktuallisieren
 
Das kann nicht sein. Du musst zumindest die Anzeige im Browser aktualisieren.

xxsasch4xx 24. Feb 2011 19:48

AW: PHP Seite aktuallisieren
 
Sry hab mich vertan es ging doch nicht, hab mich eben wohl irgendwie verklickt und bin auf den Aktualliseren Button gekommen.
Aber wenn ich den ganzen script neu reinmach, dann gehts aufjeden fall mit dem aktuallisren. Also wenn ich den alten vorher lösche und dann unter dem gleichem Namen eine neue PHP Datei ablege.

rollstuhlfahrer 24. Feb 2011 20:42

AW: PHP Seite aktuallisieren
 
Das musst du noch etwas weiter ausführen oder das Konzept ist noch nicht ganz klar: Server und Client kommunizieren nur rund 0,1 Sekunden, während deine Seite geladen wird. Dann ist die Verbindung zu und es ist zappe. Alles was danach auf dem Server passiert, interessiert den Client nen Sch***. Außerdem zeigt dein Browser keinen PHP-Quellcode an (Kannst du gerne Nachprüfen -> Ansicht -> Quelltext (im IE)). Somit kannst du mit PHP direkt den Browser nicht anweisen irgendwas zu machen. Sondern du musst JavaScript-Code produzieren, den der Browser auswertet.

Bernhard

Matze 24. Feb 2011 20:51

AW: PHP Seite aktuallisieren
 
Zitat:

Zitat von Luckie (Beitrag 1084222)
[...] Dies kann man jedoch auch automatisieren indem man ein Autorefresh per HTML Metatags auslöst: http://www.de.hscripts.com/tutorials...utorefresh.php Du müsstest mit deinem PHP Skript also dynamisch eine HTML Seite mit dem entsprechendem Metatag erzeugen.
Dies macht aber nur Sinn, wenn alle paar Minuten daten auf der Seite aktualisiert werden. Wie zum Beispiel ein Chat oder Börsenkurse oder ähnliches.[...]

Viel ordentlicher geht das per AJAX, sofern JS aktiviert ist. Das geht schneller, entlastet u.U. den Server und die Seite muss nicht komplett neu geladen werden, was immer unschön ist (Aussehen, Benutzerfreundlichkeit).

Ich erwähne es nur der Vollständigkeit halber. Dass xxsasch4xx damit nichts anfangen kann, ist mir bewusst. Da fehlen noch säntliche Grundlagen. Und bevor die nicht gelernt sind, wird das hier alles nichts, behaupte ich.

Luckie 24. Feb 2011 20:55

AW: PHP Seite aktuallisieren
 
Daran hab eich auch gedacht, nur in Anbetracht des Wissensstands von ihm, habe ich darauf verzichtet es zu erwähnen.

xxsasch4xx 25. Feb 2011 23:12

AW: PHP Seite aktuallisieren
 
Code:
<html>
<head>
<title>Hier entsteht in Kuerze eine neue Webseite</title>
</head>
<meta http-equiv="cache-control" content="no-cache">
Das is eine Seite <br>
<body>
Hier so geht es doch.
Jedes mal wenn ich etwas ändere wird es direkt aktualsiert beim erneuten aufruf ohne dass jemand f5 oder so drücken muss.
Der meta befehl sagt dann halt dem Browser, dass der die Datei neu vom Server holen soll und nicht vom Zwischenspeicher (Cache) des Browsers.

himitsu 25. Feb 2011 23:58

AW: PHP Seite aktuallisieren
 
Zitat:

Zitat von xxsasch4xx (Beitrag 1084465)
ohne dass jemand f5 oder so drücken muss.

Glaub ich nicht.

Luckie 26. Feb 2011 00:18

AW: PHP Seite aktuallisieren
 
Zitat:

Zitat von xxsasch4xx (Beitrag 1084465)
Der meta befehl sagt dann halt dem Browser, dass der die Datei neu vom Server holen soll und nicht vom Zwischenspeicher (Cache) des Browsers.

Das ist richtig. Aber kannst du mir auch verraten wie der Browser erfährt, dass sich die Seite geändert hat?

Sir Rufo 26. Feb 2011 00:27

AW: PHP Seite aktuallisieren
 
Ich glaube ihr redet aneinander vorbei.

Er sagt die ganze Zeit "... wenn die Seite erneut aufgerufen wird ..." und meint damit, die Seite wird aufgerufen, dann wird eine andere Seite aufgerufen und lustig im Internet gesurft.
Jetzt kehrt der Surfer wieder zurück zu der Seite und die Aktualisierungen, die er in der Zwischenzeit hochgeladen hat, werden nicht angezeigt.

Mit dem Header-Zusatz sollte das aber jetzt nicht mehr passieren

xxsasch4xx 26. Feb 2011 08:05

AW: PHP Seite aktuallisieren
 
Ja, genau so mein ich das. Weis den einer ob der Cache im Firefox oder IE noch gespeichert ist, wenn man den PC neu hochfährt?

Weil dann müsste der Browser ja automatisch die aktuellste Version des Script vom Server holen. Ohne den Headder Zusatz.
Aber das gilt dann halt auch nur, wenn der Browser so eingestellt ist, dass kein Cache gespeichert wird oder der PC den Cache nicht mehr laden kann wenn er neu hochgefahren worden ist.
Ich weis ja nicht genau, wie die Browser das zwischenspeichern.

Also beim Firefox Browser kann man unter Extras - Einstellungen - Datenschutz aufjeden fall einstellen, ob der Cache überhaupt angelegt werden soll oder nicht, aber das kann man ja als Programmierer bei den End Besucher der die Seite besucht nicht beeinflussen.
Man kann da auch einstellen, dass der Cache dann gelöscht wird, wenn der Browser beendet wird.
Aber das gilt dann wahrscheinlich, nur wenn man alle Fenster von Firefox zu macht und nicht nur eine Reihe von Tabs wo man Seiten aufhat schließt.

Mike_ 26. Feb 2011 10:29

AW: PHP Seite aktuallisieren
 
Zitat:

Zitat von xxsasch4xx (Beitrag 1084490)
Ja, genau so mein ich das. Weis den einer ob der Cache im Firefox oder IE noch gespeichert ist, wenn man den PC neu hochfährt?

Teste es doch einfach, in dem du es bei dir machst.

Zu deiner Frage, es ist simpel, auch ohne JS/"Ajax".

Code:
header ("Cache-Control: no-cache, must-revalidate, max_age=0");
http://www.php.net/manual/de/function.header.php

Somit ist ersteinmal deine Fragestellung beantwortet.

Solltest du dann einen Schritt weiter gehen wollen und die Seite "dynamisch" neu laden lassen, sprich auch wenn der Client noch auf deiner Seite ist dann kannst du entweder das Meta "Autorefresh" Tag benutzen oder die hübschere Variante mit Ajax.

Bei Ajax empfehl ich dir dann das Framework jQuery, einfach mit append() und remove() im bestimmten Zeitintervall.

Z.B. für eine Shoutbox ohne die gesamte Seite neu laden zu müssen.

lG

xxsasch4xx 26. Feb 2011 12:29

AW: PHP Seite aktuallisieren
 
Habe rausgefunden, dass der Cache in nem Ordner auf der Festplatte gepeichert wird.

Luckie 26. Feb 2011 12:42

AW: PHP Seite aktuallisieren
 
Was hattest du gedacht, wie der Cache aussieht und wo er gespeichert wird?

xxsasch4xx 26. Feb 2011 13:49

AW: PHP Seite aktuallisieren
 
Ja, hätte ja sein können, dass der irgendwie so intern gespeichert wird, dass man garnicht mehr dran kommt.

Mike_ 26. Feb 2011 15:16

AW: PHP Seite aktuallisieren
 
Hehe, bei Chrome speichert Google ihn in der Cloud :lol:
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::

Ich glaub dir sind einige Begrifflichkeiten noch nicht ganz vertraut.

Cache

Cookies

Profilordner

Luckie 26. Feb 2011 18:08

AW: PHP Seite aktuallisieren
 
Und wo intern? Es gibt nur zwei Orte, wo der Computer was speichern kann, die Festplatte und den Arbeitsspeuicher.

xxsasch4xx 26. Feb 2011 18:12

AW: PHP Seite aktuallisieren
 
Arbeitsspeicher dachte ich erst.,
der ist ja nach dem neu hochfahren wieder weg.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz