baseportal
Suche: 
 Forum   Start 

Dateizugriff

 
Verstecken Inhalt
Mit denselben Befehlen wie für den Zugriff auf Datenbanken kann auf Seiten/Templates zugegriffen werden:

Datei lesen

Liest den kompletten Inhalt der Datei seite in die Variable $inhalt ein. Die einzelnen Zeilen sind durch den Zeilentrenner \n getrennt. Eine Datei kann auch zeilenweise gelesen werden: Liest den Inhalt der Seite seite in das Array @inhalt ein. Jedes Element des Arrays enthält nun eine Zeile, $inhalt[0] also die erste, $inhalt[1] die zweite usw. Die Zeilentrenner sind jeweils entfernt. Belässt die Zeilentrenner \n am Ende jeder Zeile.

Daten zu Datei hinzufügen

Fügt zur Seite seite den Inhalt der Variablen $zusatz hinzu. Existiert die Seite noch nicht, wird sie angelegt. Es können auch mehrere Zeilen auf einmal hinzugefügt werden, entweder durch eigenhändiges Hinzufügen des Zeilentrenners... ...oder durch Übergabe der einzelnen Zeilen... ...oder durch Übergabe eines Array-Verweises: Jedes Element des Arrays @zusatz entspricht einer Zeile. Unterlässt das automatische Hinzufügen der Zeilentrenner, so dass tatsächlich "EinsZweiDrei" geschrieben wird und auch kein Zeilentrenner am Ende hinzugefüht wird.

Inhalt einer Datei ändern

Ändert den Inhalt der Seite seite in den Inhalt der Variablen $inhalt_neu. Der alte Inhalt der Seite seite geht verloren. Ebenso wie beim put können mehrere Zeilen durch einen Array-Verweis übergeben werden und auch hier funktioniert das raw: Die Zeilen des Arrays @inhalt_neu ersetzen den ursprünglichen Inhalt der Seite seite. Zeilentrenner werden dabei nicht automatisch hinzugefügt.

Mit gleichzeitigen Zugriffen umgehen

Oft wird der Inhalt einer Datei gelesen, verändert und dann wieder zurückgeschrieben. Was auf den ersten Blick oder bei einem lokalen Einzelplatzrechner funktioniert, wird bei Web-Anwendungen früher oder später zu Problemen führen, da mehrere Nutzer gleichzeitig auf die Daten zugreifen können. baseportal erlaubt zur Lösung dieses Problems, dem Befehl mod einen Perl-Code zu übergeben, der mit dem Inhalt der Datei ausgeführt wird. Das Ergebnis des Codes wird in die Datei geschrieben. Es wird dabei sichergestellt, dass während des gesamten Vorgangs kein anderer auf die Datei zugreift. Der Inhalt der Datei wird in $_ bereitgestellt - der Rückgabewert des Codes wird zum neuen Inhalt. Liest den Inhalt der Seite zaehler ein, erhöht ihn um 1 und schreibt den neuen Wert zurück. Dieser Code ist "thread-safe". Durch Anfügen des Parameters line wird der Code zeilenweise durchlaufen. $_ enthält dann den Wert der jeweiligen Zeile: Numeriert die Zeilen der Seite zeilen durch. Bevor nicht die komplette Datei durchgearbeitet wurde kann niemand auf sie zugreifen. Durch den Parameter all wird die Seite komplett zeilenweise eingelesen und im Array @_ bereitgestellt: Dreht die Reihenfolge aller Zeilen um. Hier ein Beispiel für ein Zählprogramm, wie man es nicht machen sollte: Führt man dieses Programm hintereinander aus, wird es zunächst aussehen, als ob es problemlos funktionieren würde. Was passiert aber, wenn das Programm nicht hintereinander, sondern von verschiedenen Nutzern gleichzeitig ausgeführt wird? Dazu muss man wissen, wie ein Computer mit mehreren gleichzeitigen Anfragen umgeht: Er "verschränkt" sie ineinander und führt von jeder Anfrage nur einen Teil aus, geht dann zur nächsten Anfrage, führt wieder nur einen Teil aus, geht zur nächsten usw. Folgendes könnte also passieren: Obwohl 2 Nutzer darauf zugegriffen haben, wurde der Zähler nur um 1 erhöht!

Datei löschen

Löscht die Seite seite.
Alte Version vom 12.9.2006, 01:20 - Stichworte: Dateizugriff, Lesen, Schreiben, Ändern, Löschen, Gleichzeitiger Zugriff, raw, all, linec und wiederherstellen - +

© baseportal GmbH. Alle Rechte vorbehalten.


powered in 0.02s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!