Sunny: Kurzschreibweise erlaubt? fclose()

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

  1. 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.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. 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

      1. 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";

        1. 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

          1. 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

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. 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

              1. 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

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
              2. 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

                --
                Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
              3. 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

                --
                Einer aktuellen Erhebung zufolge sind zehn von neun Ehefrauen eifersüchtig auf ihren Mann.