Kurzschreibweise erlaubt? fclose()
Sunny
- php
Hi, nur eine kurze Frage aus der Rubrik "Google dont't know".
Ich will eine Date erstellen wenn diese nicht vorhanden ist.
Also normal:
$fp = fopen('test.html','a');
fclose($fp);
Ich habe es jetzt mal so probiert:
fclose(fopen('test.html','a'));
Und hatte eigentlich einen Fehler erwartet aber überaschenderweise
klappt das problemlos. Kann ich also davon ausgehen, dass das völlig OK ist, oder doch eher eine Vergewaltigung des Interpreters?
Sunny
Liebe(r) Sunny,
fclose(fopen('test.html','a'));
von der Schreibweise her ist daran nichts auszusetzen. Ob das im Verlauf Deines Scripts einen Sinn hat, steht auf einem anderen Blatt...
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Danke Felix,
*schnelle Antwort;-)
von der Schreibweise her ist daran nichts auszusetzen. Ob das im Verlauf Deines Scripts einen Sinn hat, steht auf einem anderen Blatt...
doch hat es. Es geht mir erstmal nur darum das eine bestimmte Datei vorhanden sein muss, daher.
Aber in dem Zusammenhang:
Bevor ich die Datei erzeuge prüfe ich mit is_file() ob die nicht schon da ist. Jetzt frage ich mich aus Performancegründen, macht das Sinn, weil passieren kann je eh nichts denn der Modus ist ja "a" und nicht "w"?
Bei einer Datei stellt sich die Frage natürlich nicht aber bei einem Batchvorgang schon.
Also was friss mehr Resourcen, jede Datei mal eben öffnen und eventuell erstellen oder mit is_file() abfragen und falls nicht dann erstellen?
Gruss
Sunny
echo $begrüßung;
Es geht mir erstmal nur darum das eine bestimmte Datei vorhanden sein muss, daher.
Dafür kann man auch die Funktion touch($filename) verwenden.
echo "$verabschiedung $name";
Hallo
Dafür kann man auch die Funktion touch($filename) verwenden.
die kannte ich noch gar nicht, schön mal wieder ein neue Funktion kennenzulernen.
Also kann ich mir is_file() und/oder fopen() somit komplett sparen, du würdest touch() empfehlen?
Danke
Sunny
hi,
Also kann ich mir is_file() und/oder fopen() somit komplett sparen, du würdest touch() empfehlen?
Kommt drauf an - wenn es dir nichts ausmacht, dass Zugriffs- und Änderungszeitpunkt einer bestehenden Datei auf den aktuellen Zeitpunkt (bzw. den von dir angegebenen) gesetzt werden.
gruß,
wahsaga
Hallo
Also kann ich mir is_file() und/oder fopen() somit komplett sparen, du würdest touch() empfehlen?
Kommt drauf an - wenn es dir nichts ausmacht, dass Zugriffs- und Änderungszeitpunkt einer bestehenden Datei auf den aktuellen Zeitpunkt (bzw. den von dir angegebenen) gesetzt werden.
Das wäre in der Tat egal.
Was mir aber wichtig ist, wäre die Systembelastung.
Szenario:
Ein verzeichnis mit 5000 eventuellen Files zb. file_1.txt, file_2.txt, usw...
Jetzt lasse ich dieses Verzeichnis durchlaufen und wenn eine Nummer
fehlt, erstelle ich dieses File.
Wenn jetzt 90% der Files vorhanden ist, bedeutet das bei touch() natürlich auch sehr viele Dateien unnötig abzuarbeiten.
Aber bei fopen() natürlich das gleiche Problem.
Ebenso wenig serverschonend ist is_file()
Da mir keine andere Lösung einfällt, scheint somit touch() das kleinste Übel zu sein.
Sunny
hi,
Was mir aber wichtig ist, wäre die Systembelastung.
Wie oft soll denn das ganze laufen - einmalig, regelmässig, ...?
Szenario:
Ein verzeichnis mit 5000 eventuellen Files zb. file_1.txt, file_2.txt, usw...
Jetzt lasse ich dieses Verzeichnis durchlaufen und wenn eine Nummer
fehlt, erstelle ich dieses File.Wenn jetzt 90% der Files vorhanden ist, bedeutet das bei touch() natürlich auch sehr viele Dateien unnötig abzuarbeiten.
Aber bei fopen() natürlich das gleiche Problem.
Ebenso wenig serverschonend ist is_file()
Alle drei müssen (intern) erst mal rausfinden, ob die Datei existiert.
An der Stelle gibt es vermutlich nicht viel zu gewinnen.
Da mir keine andere Lösung einfällt, scheint somit touch() das kleinste Übel zu sein.
Zu welchem Zweck "müssen" die Dateien den vorhanden sein?
Man kann ja ggf. auch erst beim Versuch eines wirklichen lesenden Zugriffs auf's "Fehlen" reagieren.
gruß,
wahsaga
Hi,
Ebenso wenig serverschonend ist is_file()
Da mir keine andere Lösung einfällt, scheint somit touch() das kleinste Übel zu sein.
Also ein touch auf alles widerstrebt mir prinzipiell, und daß es schneller gehen soll, alle existenten Dateien zu aktualisieren, leuchtet mir auch nicht gerade ein.
Ich würde is_file() verwenden und wenn das negativ ist, ein touch() hinterher. Also: if(!is_file($f)) touch($f);
Gruß, Cybaer
Hi,
Jetzt lasse ich dieses Verzeichnis durchlaufen und wenn eine Nummer fehlt, erstelle ich dieses File.
wäre es da nicht günstiger, einfach _einmal_ den Verzeichnisinhalt zu lesen und dann in Ruhe die Liste durchzugehen, anstatt für jede Datei einzeln, zu "prüfen", ob sie existiert?
Da mir keine andere Lösung einfällt, scheint somit touch() das kleinste Übel zu sein.
Tatsächlich?
So long,
Martin