Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

Temporäre Dateien erstellen mit tempnam() und tmpfile()

Sie befinden sich: Home > Php Tutorial > Temporäre Dateien...

Temporäre Dateien erstellen mit tempnam() und tmpfile()


Eintrag am:  25.01.2010
Hits / Besucher:  8547
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Auf einem Webserver laufen oft mehrere Anfragen gleichzeitig. Wenn ein Skript Daten temporär in eine Datei schreiben muss, darf kein fester Dateiname verwendet werden, weil sich parallele Prozesse sonst gegenseitig überschreiben würden. PHP bietet mit tempnam() und tmpfile() zwei Funktionen, die dieses Problem lösen.

tempnam(): Eindeutigen Dateinamen erzeugen

Die Funktion tempnam() erstellt eine leere Datei mit einem eindeutigen Namen und gibt den vollständigen Pfad zurück. Die Syntax lautet:

<?php

$tmpDatei = tempnam(sys_get_temp_dir(), 'mein_prefix_');

echo $tmpDatei;
/* z.B.: /tmp/mein_prefix_X3hG7k */
?>

Der erste Parameter gibt das Verzeichnis an, der zweite ein Präfix für den Dateinamen. Mit sys_get_temp_dir() wird automatisch das Temp-Verzeichnis des Systems ermittelt, was portabler ist als ein fester Pfad.

Wichtig: Die Funktion tempnam() legt die Datei tatsächlich an (als leere Datei mit 0 Bytes). Der Name wird nicht nur generiert, sondern die Datei existiert danach auf der Festplatte. Dadurch ist garantiert, dass kein anderer Prozess den gleichen Namen erhält.

Praxisbeispiel: Daten zwischenspeichern

Ein typischer Einsatz ist das Zwischenspeichern von Daten, etwa beim Erzeugen eines CSV-Exports:

<?php

$tmpDatei = tempnam(sys_get_temp_dir(), 'csv_');

/* Daten in die temporaere Datei schreiben */
$handle = fopen($tmpDatei, 'w');
fputcsv($handle, ['Name', 'E-Mail']);
fputcsv($handle, ['Max Mustermann', 'max@example.com']);
fputcsv($handle, ['Erika Muster', 'erika@example.com']);
fclose($handle);

/* Datei zum Download anbieten */
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="export.csv"');
readfile($tmpDatei);

/* Temporaere Datei aufraeumen */
unlink($tmpDatei);
?>

Nach der Verwendung wird die temporäre Datei mit unlink() gelöscht. Das Aufräumen ist wichtig, weil tempnam()-Dateien nicht automatisch entfernt werden.

tmpfile(): Automatisch aufräumende Alternative

Wer sich nicht um das Löschen kümmern möchte, kann tmpfile() verwenden. Diese Funktion erstellt eine temporäre Datei und gibt direkt einen Datei-Handle zurück. Die Datei wird automatisch gelöscht, sobald der Handle geschlossen wird oder das Skript endet:

<?php

$handle = tmpfile();

fwrite($handle, 'Temporaere Daten');

/* Position zuruecksetzen und lesen */
rewind($handle);
echo fread($handle, 1024);

/* Datei wird beim Schliessen automatisch geloescht */
fclose($handle);
?>

Wann welche Funktion nutzen?

tempnam() eignet sich, wenn der Dateipfad an andere Funktionen weitergegeben werden muss, etwa an readfile() oder externe Programme. tmpfile() ist die bessere Wahl für kurzlebige Daten innerhalb eines einzelnen Skripts, weil die Aufräumlogik automatisch funktioniert und keine vergessenen Dateien zurückbleiben.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.