Viele Dateien per PHP löschen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Viele Dateien per PHP löschen

    Hallo,

    ich muss relativ oft gaaanz viele Dateien (mehrere 1000) per PHP löschen. Allerdings immer nur die die älter als 20 Tage sind.

    Mein bisheriger Code:
    PHP-Code:
    <?php
    echo "Start";

    function 
    getdays($day1,$day2)
    {
      return 
    round(($day2-strtotime($day1))/(24*60*60),0);


    $begin date("Y/m/d"); // we set today as an example

    foreach (glob("*.log") as $filename) {

    if (
    getdays($begin,$end) < -20)
    {
    unlink ($filename);
    }
    }

    ?>
    Der funktioniert auch in Ordnern in denen ein paar (ca 10) Testdateien sind. Aber sobald ich die Datei in dem Ordner speichere wo die vielen 1000 Dateien sind, kommt beim Aufrufen der PHP-Datei garnichts. Die seite ist sofort geladen und ist komplett leer. Es müsste aber doch zumindest "Start" oben stehen. Warum macht es das nicht?

    MfG
    Andy

  • #2
    Da muss nicht zwingend Start stehen..

    Stell mal ein error_reporting(E_ALL) an erste stelle deines Scripts.

    Die direktive dispay_errors in der PHP.INI überprüfen. (Sollte auf 1 stehen)

    Dein script stoppt irgendwo weil ein Fehler auftritt der allerdings nicht angezeigt wird (display_errors)

    Erst wenn das Script durchgelaufen ist wird Start ausgegeben, es sei denn du verwendest ob_start() und flush() bzw ob_flush() ...
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Hallo,

      auch mit dem error_reporting(E_ALL); in der ersten Zeile kommt gar keine Ausgabe. Sprich, leere Seite.

      MfG
      Andy

      Kommentar


      • #4
        werden denn überhaupt dateien gelöscht? welche php-version? welches betriebssystem?

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Ja ok.. Error_reporting ohne display_errors bringt dir nichts ...
          gruss Chris

          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

          Kommentar


          • #6
            Nein, es werden keine Dateien gelöscht.

            Ich habe keine Root-Rechte (nur Webhosting Paket), daher kann ich die PHP ini nicht anschauen. Aber auch das mit ini_set ('error_reporting', E_ALL); funktioniert nicht.

            Kommentar


            • #7
              Gibt es vielleicht noch eine andere Lösung die Dateien zu löschen. Das Problem bei FTP ist das es ewig dauert, da er jede Datei einzeln durchgeht und löscht. Das dauert fast 2 Stunden jedesmal für alle zu löschenden Dateien. Vielleicht gibts ja noch ne Möglichkeit?

              Kommentar


              • #8
                ist vielleicht ein rechte-problem. hast du die dateien per ftp hochgeladen, ohne anschließend ein chmod drüber zu jagen? hast du das mal auf einem lokalen system getestet?

                als alternative böte sich ein shell-script als cronjob an, wenn du die möpglichkeiten dazu hast.

                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  phpinfo(); und da nach display_errors suchen.. Wenn´s auf on steht, ists ok.

                  Oder
                  Versuch einfach mal

                  PHP-Code:
                  <?php
                  system
                  ("rm datei.ext");
                  ?>
                  Und schau ob die Datei gelöscht wurde.
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    Hallo,

                    ja ich kann CronJobs angeben. Hab aber keine Ahnung wie das geht. Wie würde denn der Eintrag für das Löschen heißen?

                    MfG
                    Andy

                    Kommentar


                    • #11
                      sorry, aber ich sehe in deinen Funktionen nicht, woher $end kommt.
                      ausserdem wenn es sich um mehrere 1000 Dateien handelt, würde ich in keinem fall "glob" einsetzen.
                      weil
                      es wird erst ein mehrere 1000 große Array gebildet, der eigentlich überflüssig ist und sehr der Speicher belastet

                      mit readdir und
                      if(substr($dateiname,-4)==".log" && test20tage($dateiname) )
                      unlink ($dateiname);
                      in einer direkter schleife, kommst du schneller zu deiner Ziel

                      auch die function strtotime ist für 1000-de Aufrufe e nicht besonders gut geeignet
                      Zuletzt geändert von Slava; 03.10.2006, 01:35.
                      Slava
                      bituniverse.com

                      Kommentar


                      • #12
                        Re: Viele Dateien per PHP löschen

                        Original geschrieben von andyk80
                        Die seite ist sofort geladen und ist komplett leer. Es müsste aber doch zumindest "Start" oben stehen. Warum macht es das nicht?
                        Internet Explorer macht eine leere Seite solange nichts kommt (das passiert auch auch wenn du wirreswww.wirredomain.wirrtld aufrufst.) Der Source Text dieser leeren Seite ist etwa so:

                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
                        <HTML><HEAD>
                        <META http-equiv=Content-Type content="text/html; charset=windows-1251"></HEAD>
                        <BODY></BODY></HTML>

                        Kommentar


                        • #13
                          Original geschrieben von andyk80
                          Das Problem bei FTP ist das es ewig dauert, da er jede Datei einzeln durchgeht und löscht. Das dauert fast 2 Stunden
                          Auch das ist eine Eigenheit des Internet Explorer als ftp client. Du kannst einen anderen ftp client verwenden, dann geht es rascher.

                          Kommentar


                          • #14
                            Hallo,

                            nein, leider geht es auch mit anderen FTP Progs nicht schneller. Habe nun schon ca. 5 getestet. Shareware und Freeware und auch Opensource. Alle löschen die Dateien schon schnell an sich. Aber bei der Masse von Tausenden von Dateien dauert es insgesammt schon sehr lang (mehrere Stunden).

                            Warum kommt aber nichts beim Aufruf der Seite obwohl was kommen müsste, also z.b. "Start"?
                            Die Dateien werden ja auch nciht gelöscht. Wie kann man denn nun die Lösch-.php aufrufen?

                            MfG
                            Andy

                            Kommentar


                            • #15
                              versuch mal das: mach aus dem Start mal ein Start mit 1000 "a"s

                              Kommentar

                              Lädt...
                              X