Matthias: Verzeichnis leeren

Hallo,

möchte einen Cronjob auf meinem Webserver einrichten, der mit PHP ein Verzeichnis jede Nacht leert.

Ich möchte dieses Verzeichnis nicht löschen, sondern nur die Dateien dort drin alle löschen, also komplett leeren.
Gibt es bei PHP eine Funktion, mit welcher ich das schnell umsetzen kann ?

Grüsse
Matthias

  1. Sup!

    Wenn Du Cronjobs hast, warum nimmst Du dann nicht einfach ein Shell-Skript?

    Gruesse,

    Bio

    --
    Keep your friends close, but your enemies closer!
    1. Kenn ich mich nich aus, wo kriegt man infos oder so ein shell skript her ?

      1. Kenn ich mich nich aus, wo kriegt man infos oder so ein shell skript her ?

        Bei Google zum Bleistift. Ansonsten:

        man rm

        1. Hallo!

          man rm

          Hehe, insbesondere die Optionen
              --force
              --recursive
          sind hier von Interesse, ansonsten noch
              --help

          Vom Vorhandensein des cron-jobs schließe ich auf ein Unix-ähnliches System.
          Dort ziehe ich den "Shellskript"-Einzeiler dem PHP- oder sonstwas-Skript vor.

          Freundliche Grüße

          Vinzenz

          1. Hi Vinzenz!

            man rm

            Hehe, insbesondere die Optionen
                --force
                --recursive
            sind hier von Interesse, ansonsten noch
                --help

            Bzw. die Version für die Faulen unter uns: rm -rf ;-)

            Grüße,
            Fabian St.

            --
            ---------------------
            fabi@erde ~# whatis spam
            spam: nothing appropriate
            ---------------------
            Selfcode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:( ss:) de:> js:| ch:? mo:) zu:)
            1. Hallo Fabian

              Bzw. die Version für die Faulen unter uns: rm -rf ;-)

              Willst Du das Vorurteil "kryptische Kommandozeile" untermauern?

              Freundliche Grüße

              Vinzenz

              1. Hi Vinzenz!

                Bzw. die Version für die Faulen unter uns: rm -rf ;-)

                Willst Du das Vorurteil "kryptische Kommandozeile" untermauern?

                Nein, will ich nicht und mein obiger Post sollte eigentlich auch nur als _Ergänzung_ zu deinem verstanden werden. Immerhin hast du bereits die Optionen näher erklärt, sodass die Abkürzung -r für --recursive und -f für --force nun klar sein sollte.

                Grüße,
                Fabian St.

                --
                ---------------------
                fabi@erde ~# whatis spam
                spam: nothing appropriate
                ---------------------
                Selfcode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:( ss:) de:> js:| ch:? mo:) zu:)
                1. Hallo Fabian

                  rm -rf [...] kryptische Kommandozeile

                  mein Posting war auch ohne *g* und ;-) nicht ernst gemeint!

                  Freundliche Grüße

                  Vinzenz

                  1. Hi Vinzenz!

                    rm -rf [...] kryptische Kommandozeile

                    mein Posting war auch ohne *g* und ;-) nicht ernst gemeint!

                    Ich verspreche, meinen Algorithmus für das Erkennen von Scherzen und Ironie zukünftig zu verbessern und diesen nicht nur von dem Vorhandensein von Smilies abhängig machen :-D

                    *scnr*

                    Grüße,
                    Fabian St.

                    --
                    ---------------------
                    fabi@erde ~# whatis spam
                    spam: nothing appropriate
                    ---------------------
                    Selfcode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:( ss:) de:> js:| ch:? mo:) zu:)
      2. Sup!

        Kenn ich mich nich aus, wo kriegt man infos oder so ein shell skript her ?

        Man liest ein Unix-Manual (bzw. sucht bei google nach "man rm") und dann schreibt man das Shell-Skript, genau so wie man PHP-Skripte schreibt, die schreiben sich nämlich nicht selbst. Leider.

        Gruesse,

        Bio

        --
        Keep your friends close, but your enemies closer!
  2. Lieber Matthias,

    Gibt es bei PHP eine Funktion, mit welcher ich das schnell umsetzen kann ?

    Nö. Musst Du eine Funktion schreiben, die jede Datei einzeln löscht. Hab' ich auch gemacht. Directory in Array einlesen, jeden Array-Eintrag löschend abarbeiten. Tut einwandfrei.

    Bei Unterverzeichnissen musst Du halt schön rekursiv vorgehen. :-)

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Hi,

      Nö. Musst Du eine Funktion schreiben, die jede Datei einzeln löscht. Hab' ich auch gemacht. Directory in Array einlesen, jeden Array-Eintrag löschend abarbeiten. Tut einwandfrei.

      Warum in ein Array schreiben? Was spricht denn dagegen, die Datei gleich innerhalb einer Schleife zu löschen, die as Directory durchläuft?

      1. Lieber Matthias,

        Warum in ein Array schreiben? Was spricht denn dagegen, die Datei gleich innerhalb einer Schleife zu löschen, die as Directory durchläuft?

        Wenn Du Unterverzeichnisse hast, also eine verschachtelte Verzeichnisstruktur, dann musst Du rekursiv löschen (erst Unterverzeichnis leeren, dann löschen usw.). Dazu habe ich eben ein Array angelegt, das ich dann einer rekursiven Funktion übergeben kann, die mir dann entsprechend "rückwärts" die Dateien und Unterverzeichnisse löscht.

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Hi,

          Wenn Du Unterverzeichnisse hast, also eine verschachtelte Verzeichnisstruktur, dann musst Du rekursiv löschen (erst Unterverzeichnis leeren, dann löschen usw.). Dazu habe ich eben ein Array angelegt, das ich dann einer rekursiven Funktion übergeben kann, die mir dann entsprechend "rückwärts" die Dateien und Unterverzeichnisse löscht.

          Ich steig halt vorher in das Verzeichnis ab, wenn darin Dateien vorhanden sind. Wäre mal interssant zu testen, ob deine Methode schneller ist.
          Das recursive Löschen hab ich halt mit zwei Funktionen realisiert, wobei sich die zweite Quasi selbst aufruft bei Bedarf.

  3. Hi Matthias,

    Gibt es bei PHP eine Funktion, mit welcher ich das schnell umsetzen kann ?

    Hier kannst du noch ein kleines Beispiel finden - die Funktion rm_dir_files() aus meiner dir_functions Library.

    Aufzurufen mit: rm_dir_files("../path/to/dir");

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Auf viele Fragen weiß auch Wikipedia eine Antwort.