1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

flock, fputs ?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von wapplegraph, 04.03.07.

  1. wapplegraph

    wapplegraph Normande

    Dabei seit:
    12.04.06
    Beiträge:
    571
    Hallo

    Ich habe eine Frage bei PHP: wenn man etwas z.B in einer .txt Datei ändern möchte, so löst man dies mit flock, fopen und fputs oder gibts hier andere bessere Lösungen?

    Besten Dank Jonas
     
    #1 wapplegraph, 04.03.07
    Zuletzt bearbeitet: 04.03.07
  2. Corny

    Corny Hildesheimer Goldrenette

    Dabei seit:
    15.06.06
    Beiträge:
    681
    Flock? o_O hab ich was verpasst?
    Ich benutz dazu TextEdit ("In reinen Text umwandeln", wenn du ne neue .txtdatei erstellst) oder Smultron (einfach .txt anfügen, wenn du ne neue machst)...
     
  3. wapplegraph

    wapplegraph Normande

    Dabei seit:
    12.04.06
    Beiträge:
    571
    Ah dies natürlich in PHP
     
  4. Corny

    Corny Hildesheimer Goldrenette

    Dabei seit:
    15.06.06
    Beiträge:
    681
    Sag das doch...
    Keine Ahnung :D
     
  5. Atelis

    Atelis Akerö

    Dabei seit:
    01.03.07
    Beiträge:
    1.831
    guck doch mal bei php.net - da müsstest du unter fputs auch noch ähnliche funktionen finden, wenn es die gibt...
     
  6. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Das kommt ganz darauf an, was mit der Datei passieren soll. Der übliche Weg wäre, zunächst zu prüfen, ob Du die Datei lesen darfst: is_readable($file). Dann kannst Du die Datei entweder mit file() oder mit file_get_contents einlesen. fopen und fputs können auch praktischer sein, das hängt jedoch von Deinen Wünschen ab. Wie mein Vorredner schon schrieb, solltest Du hier einfach mal in die Doku schauen ;)
     
  7. Atelis

    Atelis Akerö

    Dabei seit:
    01.03.07
    Beiträge:
    1.831
    stimmt, mit "file_get_contents" kannst du auch mit einem einzigen befehl eine komplette datei einlesen, aber denk dran:

    1. existiert die datei (file_exists)??
    2. darfst du sie lesen (is_readable)??

    und dann erst einlesen...;)


    -me
     
  8. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    Wenn die Datei "readable" ist, existiert sie auch. Die erste Funktion kann man sich also sparen. Funktioniert zumindest bei mir ganz gut.
     
  9. Atelis

    Atelis Akerö

    Dabei seit:
    01.03.07
    Beiträge:
    1.831
    :p und wenn man die datei lesen kann, dann existiert sie wohl und ist auch lesbar - nur ohne die vielen schritte ist eine spätere fehleranalyse schwieriger, was in diesem fall ja eher kein problem darstellen sollte...
     
  10. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Kommt eben darauf an, ob man Exceptions »manuell« abfangen (also ohne, dass PHP Exceptions kennt) möchte, und wie hoch man die eigenen Ansprüche schraubt. Für den Schnell&Dreckig-Ansatz mag das genügen, für den OOP-Ansatz wäre das natürlich unschön. Man kann's ja so lösen:

    Code:
    <?php
    
        $filename = '/pfad/zum/text.txt';
        $errors = array();
        if (file_exists($filename)) {
            if (is_readable($filename)) {
                if ($file_contents = file_get_contents($filename)) {
                     // Aufruf von fummel_an_datei_rum();
                } else {
                     $errors['file_get_contents'] = 'Die Datei konnte nicht eingelesen werden. Abbruch.';
                }
            } else {
                $errors['is_readable'] = 'Die Datei durfte nicht eingelesen werden. Abbruch.';
            }
        } else {
            $errors['file_exists'] = 'Die Datei existierte nicht. Abbruch.';
        }
    ?>
    
    Solche Fehlersammler sind hilfreiche Konstrukte, wenn man sich noch nicht so sicher ist, oder eine ausführliche Debug-Ausgabe plant. Später weiß man dann mit echo"<pre>\n", print_r($errors), "</pre>\n"; genau, was los ist, wenn kein fataler Fehler aufgetreten ist.
     
  11. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Bist Du Sicher, Dein Ansatz ist sicher? Siehe Kommentar im Code.
    Also ein file locking sollte man schon als allererstes versuchen, damit einem niemand die Datei entzieht.
     
  12. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    Ja, auf jeden Fall. Mit ein Grund, warum ich Dateioperationen zugunsten von Datenbanklösungen vermeide. flock() funktioniert nämlich leider nicht immer zuverlässig, »LOCK TABLE« schon (also sei MySQL 4.1).
     
  13. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.255
    Würg, warum benutzt Du keine richtige Datenbank und schickst ihr Transaktionen?
     
  14. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
  15. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    »Würg«, das tue ich, wenn ich das brauche, aber ich habe den Eindruck, wir schweifen ab. Im Übrigen denke ich, dass skeeves Beitrag hilfreich ist, ein »Würg«-Einwurf jedoch nicht.
     
  16. wapplegraph

    wapplegraph Normande

    Dabei seit:
    12.04.06
    Beiträge:
    571
    Hallo

    Danke für eure Antworten, werde dies alles einmal testen und anschauen.

    Merci wapplegraph
     
  17. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.255
    Es geht darum den grundlegenden Entwurf zu überdenken. Es gibt wenige bis gar keine Gründe auf Dateien zuzugreifen, aber das trifft auf TABLE LOCKS genauso zu. TABLE Locks benutzt man nur dann, wenn man keine echtes RDBMS hat und sich mit dieser Krücke behelfen muß. Selbst MySQL kennt einen halbwegs brauchbaren Tabellentypen (InnoDB).
     

Diese Seite empfehlen