Jan: .txt Datei erzeugen schreiben/lesen

Hallo,

ich möchte Serverseitig eine Staus speichern, Licht an / Licht aus, Sessions fallen leider aus da die Session ja beim schliesen des Browserfenster zerstört wird und ich keinen Status habe wenn ich die Webseite wieder aufrufe.

Jetzt hatte ich mir überlegt einen .txt Datei zu erzeugen und hier meine Frage:
ist es besser eine .txt Datei zu erzeugen Staus Licht an und zu löschen Status Licht aus und dann zu überprüfen ob entsprechende Text Datei vorhanden ist oder in eine Text Datei zu schreiben 1 Licht an 0 Licht aus und dann die Textdatei einzulesen um den Status abzufragen.

Oder gibt es noch einen eleganteren Weg?

Über Ideen und Meinungen würde ich mich freuen,

Gruß
Jan

  1. Hallo Jan,

    wie willst du den Seitenbesucher identifizieren, nach dem er seinen Browser "wieder" geöffnet hat?

    Warum keine Cookies?

    gruss qx

    1. Hallo,

      noch als Info es ist "nur" eine Intranetseite.

      Deshalb will ich das ganze ja auf dem Server speichern, Benutzer sprich Webclient ruft ein php Script auf und dieses fragt den Status ab, da ist dann doch nicht nötig den Seitenbesucher sprich Benutzer zu identifizieren.

      Kurz zum Szenario: User A ruft Intranetseite auf, schaltet Licht ein, Staus Licht an wird gestzt, hier dann meine Frage Text Datei erstellen/löschen oder schreiben/auslesen, User B ruft die Seite auf, sieht Status Licht an, macht ggf. Licht aus, Staus ändert sich auf Licht aus.

      Ich hoffe es ist so noch ein bissel verständlicher...

      Gruß
      Jan

      1. Hallo,

        fürs Intranet? Dann ist es doch wurscht ob erstellen/löschen oder schreiben/auslesen.

        1. Om nah hoo pez nyeetz, qx!

          fürs Intranet? Dann ist es doch wurscht ob erstellen/löschen oder schreiben/auslesen.

          Irgendwo hab ich mal gelesen, dass man sich möglichst viele Optionen offenhalten sollte. Was wenn später mal ein Protokoll draus werden soll? Insofern wäre ich für schreiben/lesen.

          Matthias

          --
          Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Ventil und Ventilator.

  2. Hello Jan,

    eine Benutzeridentifizierung und Benutzerauthorisierung kannst Du später immer noch drum herum legen.

    Ich würde mir an Deiner Stelle mal
    http://de3.php.net/manual/en/function.parse-ini-file.php
    anschauen.

    Und vergiss nicht, das File zum Schreiben und Lesen auch zu sperren, damit es nicht zerstört wird, wenn zwei Prozesse gleichzeitig darauf zugreifen.

    http://de3.php.net/manual/en/function.flock.php

    Die wichtigste Regel dazu lautet: Wenn geschrieben werden soll (Daten verändert) muiss bereits zum Auslesen der alten Daten eine exclusive Sperre gesetzt werden.

    also [skizziert, Fehlerbehandlung muss berücksichtigt werden]

    $fp = fopen()
    flock($fp, LOCK_EX)
    $cont = read($fp)
    $cont = $cont . $neucont
    fseek($fp, 0, SEEK_SET)
    fwrite($fp, $cont)
    ftruncate($fp, strlen($cont))   ## wenn der neue Inhalt kürzer als ,der alte ist
    fclose($fp)

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://restaurant-zur-kleinen-kapelle.de
  3. Tach!

    ich möchte Serverseitig eine Staus speichern, Licht an / Licht aus, Sessions fallen leider aus da die Session ja beim schliesen des Browserfenster zerstört wird und ich keinen Status habe wenn ich die Webseite wieder aufrufe.

    Zum einen kann man Session-Cookies auch mit längerer Laufzeit ausstatten. Zum anderen ist das Verwenden einer Session nicht an einen speziellen Client gebunden, auch wenn das der hauptsächliche Einsatzzweck ist. Man kann auch eine Session mit immer derselben Session-ID öffnen und hat dann ohne weiteres Zutun die Daten in einem komfortablen Array stehen. Zu beachten ist lediglich, dass die Anwendung ihre Session-Daten in einem separaten Verzeichnis speichert (sonst räumen andere Scripte deine Daten auch mit auf) und die Einstellugnen für den Garbage-Collector so gesetzt sind, dass er nie losläuft.

    Jetzt hatte ich mir überlegt einen .txt Datei zu erzeugen und hier meine Frage:

    Wenn du die Dateiverwaltung selbst machst, musst du dich in einem Multi-User-System korrekterweise auch um einen problemlosen Parallelzugriff kümmern, also dich auch dem Thema Dateisperren beschäftigen. Wenn es ein bisschen mehr als eine Textdatei sein darf, so sei dir SQLite empfohlen. Auch dabei musst du dich nicht selbst um eine Parallelzugriffssperre kümmern, das ist in SQLite bereits eingebaut.

    dedlfix.

  4. hi,

    Über Ideen und Meinungen würde ich mich freuen,

    Also Du hast einen Status, der persistent gehalten werden soll.

    1. Überlegung
    Wozu um Himmels Willen, muss das eine Text-Datei sein!?

    2. Wenn es eine Datei sein soll, dann ists nicht der Mensch, der die beschreibt und lesen tut, vielmehr wird die Datei maschinell erstellt und maschinell gelesen.

    Daraus folgt: Das Dateiformat ist völlig uninteressant!

    Ergo, Lösung mit 'Datei': serialize() und fertig.

    Wozu auch ewig selbst überlegen, wie Daten in txt-Dateien abgelegt werden. Ich hatte mal einen Kollegen, der hat mit sowas einen halben Tag verbracht. In der Mittagspause habe ich das mitbekommen und eine halbe Stunde später war das erledigt.

    Schönes Wochenende!