PHP 4.3

10.7 Dateien schließen

Nachdem Sie die erforderlichen Aktionen in einer Datei durchgeführt haben, muss diese geschlossen werden. Einerseits entlasten Sie damit die Systemressourcen des Servers, andererseits gewähren Sie in Betriebssystemen, die Dateien exklusiv reservieren, anderen Prozessen wieder Zugriff. Lassen Sie die Dateien also nicht unnötig lange geöffnet.

Zum Schließen einer Datei verwenden Sie die Funktion fclose(), die als Parameter den Dateizeiger erwartet, also:

Anwendung von fclose() (Ausschnitt)
  fclose($fp);

Wir fassen das bisher erlernte Wissen über Dateifunktionen noch einmal zusammen und zeigen im nächsten Beispiel, wie Sie einfache, zufällige Meldungen auf einer Website erscheinen lassen können. Der Webmaster kann einfach eine Textdatei mit solchen Meldungen per FTP auf den Server übertragen und auf diese Weise regelmäßig andere Inhalte präsentieren. Die Lösung basiert auf den drei Funktionen fopen(), fgets() und fclose(). Alternativ stellen wir auch eine Lösung auf Basis der Funktion file() vor, die alle drei Schritte ineinander vereint und ein Array mit den Zeilen der Datei zurückliefert.

Zum Ausprobieren des Skripts benötigen Sie folgende oder eine ähnliche Datei mit dem Namen
weiseworte.txt.

Hinweis: Die Darstellung des Textes ist abhängig von der Größe Ihres Browserfensters. In der Datei sollte innerhalb eines Zitats kein Zeilenumbruch vorkommen.

  
  Eine Japanische Weisheit sagte: Das Glück kommt zu denen, die lächeln.
  Seneca sagte: Es ist nicht wenig Zeit, die wir haben, sondern es ist viel, die wir nicht nützen.
  Lernen ist wie Schwimmen gegen den Strom. Sobald man aufhört, treibt man zurück.
  Jeder Dummkopf mag zu Geld kommen, aber um es zu behalten, braucht es einen klugen Kopf.
  Seneca sagte: Nichts bringt uns mehr vom Glück ab, als dass wir uns nach dem Gerede der Leute richten statt nach unseren Überzeugungen.
  Neid ist die ehrlichste Form der Anerkennung.
  Kluge Köpfe sprechen über Ideen. Mittelmäßige über Vorgänge. Schwache über andere Menschen.

Im nachfolgenden Skript setzen wir eine Funktion ein, die eine gesonderte Erwähnung verdient. Die Funktion rand() ist die zweite Pseudozufallsfunktion in dieser Qualifikationseinheit und ermittelt eine Zufallszahl in einem mit Parametern festzulegenden Zahlenraum. Dieser reicht in unserem Skriptbeispiel von 0 bis zur Anzahl der ausgelesenen Zeilen minus 1, um bei jedem Aufruf des Skripts ein zufälliges Zitat auszuwählen. Wie schon beim Einsatz von shuffle() nutzen wir srand(), um einen Startwert für den Zufallszahlengenerator zu setzen.

Beispielskript "Weise Worte"
<?php

  $fp = fopen("weiseworte.txt", "r");
  if ($fp == true) {
     while (!  feof($fp)) {
       $zeile = chop(  fgets($fp, 4096));
       if ($zeile != "") {
          $fp_arr[] = $zeile;
        }
       }
       fclose($fp);
      }
     $cnt =  count($fp_arr);
     srand ((  double)   microtime() * 1000000);
     $random =  rand(0, $cnt-1);
     $wort = $fp_arr[$random];

?>

<html>
<body>
<?php
  echo "<b>Das weise Wort</b><br><br><i>";
  echo $wort;
  echo "</i>";
?>
</body>
</html>

file()

Wie bereits erwähnt, stellt PHP mit file() eine praktische Funktion zur Verfügung, mit der sich die Schritte des Öffnens, Auslesens und Schließens einer Datei zusammenfassen lassen. Dabei liefert die Funktion file() ein Array zurück, dessen Elemente jeweils eine Zeile der Datei enthalten.

array file (string Dateiname [, int Benutze-Include-Pfad-Angabe])

Als Parameter erwartet die Funktion file()den Namen der Datei, die ausgelesen werden soll. Optional können Sie, indem Sie als zweiten Parameter 1 angeben, festlegen, dass die Funktion diese Datei in den Standard-Include-Verzeichnissen suchen soll, die man in der PHP-Konfigurationsdatei php.ini unter dem Eintrag include_path festlegen kann.

Zu beachten ist, dass die Funktion file() das Newline-Zeichen am Ende einer ausgelesenen Zeile nicht entfernt.

Ein Skript, welches die gleiche Funktion wie das oben abgebildete erfüllt, könnte unter Verwendung der Funktion file() wie folgt aussehen:

Beispielskript "Weise Worte" unter Verwendung der Funktion file()
<?php
    $zeilen = file("weiseworte.txt");
    $cnt = count($zeilen);
    srand ((  double)   microtime() * 1000000);
    $random = rand(0, $cnt-1);
    $wort = chop($zeilen[$random]);

?>

<html>
<body>
<?php
     echo "<b>Das weise Wort</b><br><br><i>";
     echo $wort;
     echo "</i>";
?>
</body>
</html>



Browserausgabe (Beispiel)
        
   Das weise Wort
 
   Eine Japanische Weisheit sagte: Das Glück kommt zu denen, die lächeln.

Kommentare (0)

Ihr Kommentar

Name