Thomas Schmieder: datei erzeugen

Beitrag lesen

Hallo Alicia,

so ganz schemenhaft ahne ich, was Du vorhaben könntest.

Temporärdateien sind dafür da, dass die Datei automatisch wieder gelöscht wird, wenn das Handle zurückgegeben wird oder der Parentprozess endet (dann wird das Handle automatisch wieder zurückgegeben).

$longPath = tempnam($pfad,$namebase);

erzeugt aber nur eine "normale" Datei mit einem speziellen eineindeutigen Namen. Der Name wird auf "Hardwarebene" von PHP ausgewürfelt. Die Datei wird angelegt und muss dann ganz normal mit fopen() und unlink() benutzt werden.

Der Sinn?
Stell Dir vor, Dein Server hat pro Sekunde hundert Besucher und alle benutzen das selbe Skript, Dann würde es ganz viele Fälle geben, wo ein von Dir über das langsame Skript ausgewürfelter Dateiname bereits vergeben ist. Der Server würde sich durch diesen konkurrierenden Betrieb selber lahm legen. Also hat man diese Funktion gebaut, die in der untersten Betriebssystemeben gecodet ist und ungefähr 1000 bis 10000 mal schneller abläuft, als eine selbstgeschriebene.

Die Chance, einen gültigen Dateinamen zu ergattern ist also selbst bei 100 Besuchern die Sekunde noch sehr gut.

Wenn Du eine Temporärdatei anlegen willst, musst Du tmpfile() benutzen und bekommst ein Handle zurück. Das verleirt seine Gültigkeit leider schon nach dem Ende des Scriptes.

Ich würde mir Dateien wünschen, die automatisch nach der ersten Auslieferung an den Client verschwinden. Also "selbstlöschende Dateien". Das kann man nur über einen Trick erreichen.

Wann man die braucht? Bei CRM-Systemen...

Liebe Grüße

Tom