PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : funktion die erkennt, wenn sich eine datei ändert



abc
13-01-2006, 18:58
hi,

ich suche eine funktion in php, die erkennt ob sich eine datei ändert oder geändert wird.
gibt es so eine funktion?

für antworten bin ich sehr dankbar :D

nEox
13-01-2006, 19:20
Hallo,

du kannst das Änderungsdarum auslesen und zwischenspeichern. Hat sich das Änderungsdatum beim nächsten Auslesen geändert wurde auch die Datei verändert.

http://de3.php.net/manual/de/function.filectime.php

Grüße,
nEox

abc
13-01-2006, 20:49
danke vielmals. noch eine kleine frage: wie kann ich die ausgabe von filectime in eine variable leiten?

Turbohummel
13-01-2006, 21:33
$var = filectime(filename)

nEox
13-01-2006, 21:37
Hi abc,

ganz normal wie bei jeder Funktion die etwas zurückliefert per:

$fileChange = filectime('filename.dat')

Im englischen Manual ist ein Beispiel wie du es noch verwenden kannst:

$filename = 'somefile.txt';
if (file_exists($filename)) {
echo "$filename was last changed: " . date("F d Y H:i:s.", filectime($filename));
}

Siehe:
http://de3.php.net/manual/en/function.filectime.php

Grüße,
nEox

abc
14-01-2006, 11:58
danke nochmal!
aber die fragerei hört nie auf: kann ich festlegen, dass eine funktion jede sekunde neu ausgeführt wird

undefined
14-01-2006, 15:29
ja ( register ticks )- aber das macht keinen Sinn. Weil du anscheinend nicht unterscheidest was eine Serverseitige und Client Anwendung ist ;)

abc
14-01-2006, 15:35
aha hab grad splle gefunden tuts auch... :D

nEox
14-01-2006, 16:12
Hi,


aha hab grad splle gefunden tuts auch...
Was ist splle?

Was genau hast du denn vor? Vielleicht kann man das Problem anderst lösen...

Viele Grüße,
nEox

BLUESCREEN3D
14-01-2006, 16:29
aha hab grad splle gefunden tuts auch... :DWas ist splle?
Vielleicht "sleep"?
Die richtigen Buchstaben dafür hätte er ja schonmal getroffen :D

abc
14-01-2006, 16:37
hi!

ja splle war ein tippfehler sollte sleep heißen :(

hab aus einem buch ein beispiel gemacht, indem ein kleiner chat erstellt wird. der geschriebene text wird in einer datei (füralle schreibbar) zwischengespeichert von der er wieder auf dem bildschirm ausgegeben wird. es muss aber ständig (automatisch) aktualisiert werden, damit ein neu geschriebener text dazukommt. ich will nun haben, dass ,wenn jemand etwas schreibt, automatisch aktualisiert wird. (um unnötige zeitfressende, kostenfressende aktualisierungen zu vermeiden)

zuerst hatte ich die idee, dass filectime erkennt wenn sich das file ändert und dann automatisch aktualisiert.
dann dachte ich man könnte es auch lösen indem man überwacht wenn jemand den absenden button für die nachricht drückt, dass dann aktualisiert wird

undefined
14-01-2006, 17:13
Du hast mein Posting nicht richtig gelesen sonst würdest das jetzt nicht schreiben. ;)
Wenn du einen Chat Programmieren möchtest sind Sockets angesagt. Alles andere wird und kann nicht gehen ;) Und zudem - Socket Programierung unter PHP - naja dann würde ich hier eher Perl nehmen.

Turbohummel
14-01-2006, 17:26
Sockets funzen unter PHP wunderbar.
Aber ansonsten geb undefinded recht.

abc
14-01-2006, 17:30
es soll eigentlich ja kein proffessioneller chat sein nur eine kleie übung die ich ein wenig verbessern wollte

undefined
14-01-2006, 17:49
Wenn du einen Einfachen Chat ohne Sockets Proggen möchstet, dann ist definitiv Frameset und Javascript angesagt! In einem Frame die Abfrage auf die PHP URL mit der die Datei Überwacht wird, den Rest für die Ausgabe, oder - wie ich es machen würde. In einem Frame mit Javascript Refresh an die PHP Seite eine GET Anfrage und die Daten in das Textarea schreiben.

nEox
14-01-2006, 17:53
Hi abc,

um bei einem Chat die Mitteilungen zu aktualisieren hast du 2 Möglichkeiten:


client pull
Hier wird durch den Client ein Reload in zeitlichen Abständen von einigen Sekunden ausgelöst. Dadurch wird das PHP neu geladen und die Nachrichten im Chat können aktualisiert werden.

Der Reload kann per META-Tag oder über JavaScript durchgeführt werden.

Wenn wird der Reload über META-Tag gemacht läd die komplette Seiten neu.

Beim Reload über JavaScript kann auch nur ein Teil der Seite aktualisiert werden (z. B. das Chatfenster). Hierbei wird das XMLHttpRequest-Objekt verwendet, in letzter Zeit ist darum ein Hype entstanden der sich AJAX (http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29) nennt.

Ein AJAX-Chat Beispiel ist z. B. (einfach mal nach "ajax chat" googeln):
http://kuraikaze.ku.funpic.de/ebb_chat/


server push
Hier sendet der Server immer nur die letzte Zeile, bzw. nach einer bestimmten Anzahl von Zeilen, wird die Seite komplett neu geladen. Das Skript scheint also "ewig" zu laden. Das verwendete Verfahren nennt sich Serverpush.

Hier Code-Beispiele für das "Server-Push"-Verfahren:
http://web.they.org/software/php-push.php
http://xulplanet.com/tutorials/mozsdk/serverpush.php

Ein Live-Beispiel für Serverpush ist z. B. Chatworld (http://chatworld.de/).

Achtung wenn du den Chat produktiv einsetzen solltest! Die Serverpush-Methode frisst viel Leistung vom Server, da für jeden Chatter eine Verbindung zum Server geöffnet und bestehen bleibt.


Wenn der Chat "nur zur Übung" ist, ist die client pull-Methode zu empfehlen. Ob das jetzt über Sockets gemacht wird oder nicht halte ich jetzt mal für weniger wichtig, Sockets solltest du dir aber auf jeden Fall mal angeschaut haben... wenn auch nur zu Übungszwecken.

Grüße,
nEox