PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Verzeichnisse nach X Tagen löschen (https://www.php-resource.de/forum/php-developer-forum/105294-verzeichnisse-nach-x-tagen-loeschen.html)

[pezi] 13-10-2015 03:07

Verzeichnisse nach X Tagen löschen
 
Ich habe viele Verzeichnisse welche von einer Webcam angelegt werden. Alle haben das Format yyyy-mm-dd.
Deren Bilder werden aus den (ab den da sehr tief verschachtelten Unterordnern) rauskopiert, anderswo abgelegt, nach Datum umbenannt und dem Anzeigescript auf einer Site zvg. gestellt. Diese "Quellordner" sind später unnötig, sollen weg. Dazu habe ich eine rekursive Lösch-Funktion, passt geht auch.

Nun sollte die Lösch-Funktion nur jene Verzeichnisse löschen die X Tage alt sind.

Ich habe echt alles probiert, was Google u. vor allem php.net hergibt, aber es funzt nicht!

Ich möchte an der Stelle auch noch keine Codes zeigen oder Fehler nennen, sondern einfach schauen ob es einen Denkanstoß gibt, ob eine bestimmte Methode oder Funktion empfohlen wird.

Die Vorgangsweise sollte so sein:
  1. Array mit den Verzeichnisnamen (yyyy-mm-dd) per foreach listen
  2. Differenz zwischen Heute und den, als als Verzeichnisnamen vorliegenden Datum vergleichen
  3. alle welche eine höhere Differenz als X Tage aufweisen
  4. der Löschfunktion zuführen...

Danke!

wahsaga 13-10-2015 08:21

Datum erzeugen für X Tage in der Vergangenheit (strtotime/DateTime::sub), ebenfalls als yyyy-mm-dd formatieren – und schon hast du einen Wert, der sich mit größer-gleich/kleiner-gleich „vergleichen“ lässt.

[pezi] 14-10-2015 00:22

Danke für die Antwort, in der Tat ist das eine gute Idee. Ich habe alle Scripts gelöscht und vorhin neu begonnen - denn manchmal (Wald <> Bäume).

Dennoch klappte es noch immer nicht, wieder scheine ich eine Kleinigkeit falsch zu machen

PHP-Code:

<?php 
/* dirarray simuliert hier die Verzeichnisnamen */
    
$dirarray[]="2015-10-01";
    
$dirarray[]="2015-10-05";
    
$dirarray[]="2015-10-10";

    foreach(
$dirarray as $row) {
        
#echo $row."<br>";
        
$predatum = new DateTime('2015-10-13');# Normalerweise 'now', zum Test fixes Datum
        
$predatum->sub(new DateInterval('P10D'));# predatum liegt immer 10 Tage hinter dem aktuellen Datum
        
$predatum_f $predatum->format('Y-m-d');# echo $predatum_f. "<br>\n";

        # Der Boolsche Vergleich klappt:
        
var_dump($row $predatum_f);# ist 2015-10-01 kleiner als 2015-10-03? TRUE
                                     # ist 2015-10-05 kleiner als 2015-10-03? FALSE
                                     # ist 2015-10-10 kleiner als 2015-10-03? FALSE

        # Da sollte NUR das EINE Verzeichnis erscheinenen welches kleiner/älter ist - tuts aber nicht, alle sind da...
        
if($row $predatum) {
            echo 
"Verzeichnis-Datum ".$row" ist kleiner/älter als ".$predatum_f."<br>\n";
        }
    }
?>

:{ Die Ausgabe der Abfrage kann so nicht stimmen: Es dürfte nur die Zeile mit den Datum 2015-10-01 da stehen.
Code:

bool(true) Verzeichnis-Datum 2015-10-01 ist kleiner/älter als 2015-10-03
bool(false) Verzeichnis-Datum 2015-10-05 ist kleiner/älter als 2015-10-03
bool(false) Verzeichnis-Datum 2015-10-10 ist kleiner/älter als 2015-10-03

:confused: Wo ist mein Fehler?

PS: Viele Antworten auf ähnliche Fragen bez. Datumsberechnungen weisen darauf hin man solle dies doch gleich in der DB erledigen. Da gibts aber keine...

[pezi] 14-10-2015 00:34

Passt schon - Fehler gefunden - ich hatte bei der Abfrage if($row < $predatum_f) statt dem formatierten $predatum_f das unformatierte Datumsobjekt ($predatum) verglichen.

PHP-Code:

 if($row $predatum_f) {
            echo 
"Verzeichnis-Datum ".$row" ist kleiner/älter als ".$predatum_f."<br>\n";
        } 

So passt alles - Danke!


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:16 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG