Status ändern

  • #1
D

Domi7

Guest
Hallo zusammen

Ich habe eine Frage bezüglich PHP. Folgendes Problem habe ich:

Ich möchte das wenn sie die betreffende Datei ändert des Status automatisch auf online gesetzt wird und wenn sich die datei eine gewiss Zeit lang nicht ändert, so soll der Status offline ausgegeben werden. Kann mir jemand von euch Helfen? Besten Dank.
 
  • #2
  • #3
ok ok tut mir leid! ;)

also:

ich benötige einen php code, welcher mir folgendes auswertet:

test.php wurde verändert --> ausgabe ist online
test.php wurde eine bestimmte zeit lang nicht verändert --> ausgabe ist offline

Ich habe ein wenig PHP Kenntnisse... Besten Dank...
 
  • #4
filemtime -- Liefert Datum und Uhrzeit der letzten Dateiänderung

Beschreibung
int filemtime ( string filename )

Gibt Datum und Uhrzeit zurück, wann die Datei das letzte mal modifiziert wurde, oder FALSE wenn ein Fehler auftrat. Das Datum wird als UNIX-Timestamp zurückgegeben, was für die Funktion date() sehr passend ist.

Das Ergebnis dieses Funktionsaufrufes wird zwischengespeichert. Siehe clearstatcache() für weitere Einzelheiten.

Diese Funktion ist nicht für remote Dateien geeignet, die zu prüfende Datei muss über das Dateisystem des Servers verfügbar sein.

Anmerkung: Diese Funktion gibt den Zeitpunkt zurück, an dem in die Datenblöcke einer Datei geschrieben wurde; d.h. den Zeitpunkt der Änderung des Inhalts der Datei.

filemtime() Beispiel
Code:
<?php
// Gibt z.B. aus: somefile.txt was last modified: December 29 2002 22:16:23.

$filename =->somefile.txt';
if (file_exists($filename)) {
  echo $filename was last modified:  . date (F d Y H:i:s., filemtime($filename));
}
?>

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

wenn du nun einen alten Timestamp mit dem aktuellen Timestamp vergleichst, kannst du sehen, ob sich da was geändert hat.

z.B.

Code:
<?php
...
$file = test.php;
$ts_old = 123....

$online = (filemtime($file) > $ts_old) ? true : false;
...
?>
wobei $ts_old der alte Timestamp ist.

that's it

gruss conny
 
  • #5
hey super schnelle antwort conny! dank viel mal!

aber eben... ;)

Ich habe ein wenig PHP Kenntnisse..

wäre es möglich das du mir das mit dem timestamp vergleich au noch in das script packen könntest? danke...
 
  • #6
Schon längst passiert ;) ;)
 
  • #7
ich möchte ja deine zeit nich verschwenden aber könntest du mir das zweite script noch ausführlicher aufschreiben? denn ich krieg das immer noch nicht in meine birne ;) wie ich das jetzt genau machen soll... danke!!!
 
  • #8
Kein Problem ;)

Code:
<?php
...
$online = (filemtime($file) > $ts_old) ? true : false;
...
?>

Diese Zeile sagt nichts anderes als:

Wenn die letzte Änderung von der Datei test.php später war als meine Vergleichszeit,
dann hat die Variable $online den Wert => TRUE
sonst hat die Variable den Wert => FALSE

ist die Variable $online => TRUE, kannst du die Datei Online stellen.

oder anders formuliert:
Code:
<?php
...
$datei = test.php;
$alter_timestamp = 123....;
$neuer_timestamp = filemtime($datei);

if($neuer_timestamp > $alter_timestamp) {
  // Die Letzte Änderung ist neuer als die Vergleichszeit
  // Datei kann Online gesetzt werden
}
else {
  // Die Letzte Änderung ist nicht neuer als die Vergleichszeit
  // Datei kann Offline gesetzt werden
}
...
?>

gruss conny

domi7 schrieb:
ich möchte ja deine zeit nich verschwenden

Mach ich doch gerne ;) ;)
 
  • #9
ok ok jetzt kommt es langsam ;)

eine frage noch:

Code:
$alter_timestamp = 123....;

was bedeutet hier die zahl 123?
 
  • #10
*lacht*

das ist dein Vergleichswert, den kenn ich doch nicht.
Sollte nur als Beispiel dienen.

Wie und Wo du jetzt deinen Vergleichswert herbekommst bzw. speicherst, dass steht in einem anderen Buch ;)

gruss conny
 
  • #11
hehe ok tut mir leid ;)

habe es nun folgendermassen gelöst:

Code:
<?php

$filetime = filectime(pic.jpg);
$now = mktime();
$sek = 80;

if($filetime < $now - $sek) {

echo <font color=\red\>offline</font>;

}

else {

echo <font color=\green\>online</font>;

}



?>
 
  • #12
Sorry, nu komm ich nicht ganz mit ??? :(

Die Rede war doch ob der Datei-Inhalt geändert wurde, oder lieg ich da falsch ???

und das währe filemtime.

Aber egal, wenns klappt ist OK.

filectime doesn't seem to be working properly on Win32 systems (it seems to return the creation time). Try using filemtime if you have problems.

gruss conny

PS: und von Bildern war auch keine Rede :-\
 
  • #13
hehe... ja aber das spielt ja im endeffekt keine Rolle. Es geht ja nur darum ob sich eine Datei (was auch immer für eine Endung sie hat) verändert hat. Das Betriebssystem meines Servers is FreeBSD ;)
 
  • #14
ok in einem habe ich mich evtl. falsch ausgedrückt... ich meinte mit ob sich die datei geändert hat hat sie sich aktualisiert... aber trotzdem dank für diene hilfe conny cu
 
Thema:

Status ändern

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.836
Beiträge
707.957
Mitglieder
51.489
Neuestes Mitglied
DonMartin
Oben