SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.05.2007, 19:47:20
Taktaky Taktaky ist offline
Anfänger
 
Registriert seit: May 2007
Beiträge: 12
Alte Bilder löschen, wenn die gesamte Grösse der Bilder > Maximal

Hallo,

ich habe einen uploader.php
dieser uploader speichert die Bilder in einem Ordner heisst z.B. "speicher"
und nun habe ich das script. dass es die alte Bilder löschen soll, damit der Speicherplatz nicht voll wird :
Zitat:
<?php

# Dateien löschen wenn die Dateien zusammen zu groß sind
if(isset($aktionen['groesserals'])){
# pruefen wie groß das Verzeichnis ist
$groesse = 0;
foreach($vorhandenedateien as $datei){
$groesse += $datei['groesse'];
}
$groesse /= 1024*1024;
if($groesse > $aktionen['groesserals']){
# Dateien umsortieren
function groessensort($a, $b){
if($a['erstellt'] == $b['erstellt']){
return 0;
}
return ($a['erstellt'] < $b['erstellt'])?-1:1;
}
usort($vorhandenedateien,'groessensort');
$i = 0;
# so lange löschen, bis die Gesamtgröße unter dem Sollwert liegt
while($groesse > $aktionen['groesserals']){
$groesse -= ($vorhandenedateien[$i]['groesse']/(1024*1024));
unlink($vorhandenedateien[$i]['dateiname']);
unset($vorhandenedateien[$i]);
$geloeschte++;
$i++;
}
}
}
if($geloeschte > 0){
$meldungen[] = 'Es '.($geloeschte==1?'wurde 1 Zeitenentwicklungsbild':'wurden '.$geloeschte.' Zeitenentwicklungsbilder').' gelöscht.';
}
?>
Ich möchte einen Speicherplatz für den Ordner "speicher" 1 GB eingeben.
Das Script soll immer die alte Bilder in Ordner "speicher" löschen, wenn die gesamte Dateien im Ordner > 1 GB

Wer kann mir helfen, indem er das Script nach meinem Wunsch anpasst.

Ich freue mich gerne auch, wenn ich ein anderes Script finde und nicht unbedingt dies

Ich bin für jede Hife dankbar

Gruss

Geändert von Taktaky (03.05.2007 um 19:49:57 Uhr)
Mit Zitat antworten
  #2  
Alt 03.05.2007, 20:15:09
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Alte Bilder löschen, wenn die gesamte Grösse der Bilder > Maximal

Woran erkennst Du 'ältere Bilder'?
Mit Zitat antworten
  #3  
Alt 03.05.2007, 21:45:30
Taktaky Taktaky ist offline
Anfänger
 
Registriert seit: May 2007
Beiträge: 12
AW: Alte Bilder löschen, wenn die gesamte Grösse der Bilder > Maximal

>>Woran erkennst Du 'ältere Bilder'?

Über das datum natürlich :)

http://members.lycos.co.uk/forforums...nach_datum.jpg

Ich habe schon ein Script, dass es die Bilder (Dateien), die älter als Jahr sind, löscht. Ich verwende das Script seit einiger Zeit. Nachteil von dem Script: Der Ordner kann in wenigen Monaten voll sein.

Wenn ich kein Script finde dann muss ich mein alte Script verwenden, indem ich die Zeit ändere (6 Monate statt ein jahr z.B)

Gruss

Geändert von Taktaky (03.05.2007 um 21:50:11 Uhr)
Mit Zitat antworten
  #4  
Alt 03.05.2007, 21:51:14
Taktaky Taktaky ist offline
Anfänger
 
Registriert seit: May 2007
Beiträge: 12
AW: Alte Bilder löschen, wenn die gesamte Grösse der Bilder > Maximal

http://members.lycos.co.uk/forforums...nach_datum.jpg
Mit Zitat antworten
  #5  
Alt 04.05.2007, 01:36:17
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Alte Bilder löschen, wenn die gesamte Grösse der Bilder > Maximal

Zitat:
Zitat von Taktaky Beitrag anzeigen
>>Woran erkennst Du 'ältere Bilder'?
Über das datum natürlich :)
Das wäre das:
http://de3.php.net/manual/de/function.filemtime.php

Du mußt also in einer Schleife das Verzeichnis lesen und ein Array so füllen:

$a[filemtime($path . '/' . $name)] = $path . '/' . $name;

Zusätzlich mußt Du in der Schleife noch filesize addieren:

$gesamt += filesize($path . '/' . $name);

Danach sortierst Du das Array 'aufwärts':
http://de3.php.net/manual/de/function.ksort.php

Originalschlüssel (filemtime())werden nicht mehr benötigt:
http://de3.php.net/manual/de/function.array-values.php

Der Rest ist einfach:
PHP-Code:
$max 1000000;
$flag true;
while(
$gesamt $max)
{
  
$n array_shift($a);
  
$flag false;
  if (
$n == NULL)
    break;
  
$flag true;
  
$gesamt -= filesize($n);
  
unlink($n);
}

if (
$flag === false)
  die(
"Nix zum Löschen da oder neues File zu groß"); 
Mit Zitat antworten
  #6  
Alt 04.05.2007, 11:55:53
Taktaky Taktaky ist offline
Anfänger
 
Registriert seit: May 2007
Beiträge: 12
AW: Alte Bilder löschen, wenn die gesamte Grösse der Bilder > Maximal

Hallo

und so habe ich das Script nun aber wird nichts gelöscht !

Was fehlt noch?

Ich habe extra maximale Grösse 10 nur zum testen :

Zitat:
<?php

$a[filemtime($path . '/speicher' . $name)] = $path . '/speicher' . $name;
$gesamt += filesize($path . '/speicher' . $name);
# Dateien umsortieren
$array = array("0", "a", "1", "b", "2", "c");
sort($array);
print_r($array);
$max = 10;
$flag = true;
while($gesamt > $max)
{
$n = array_shift($a);
$flag = false;
if ($n == NULL)
break;
$flag = true;
$gesamt -= filesize($n);
unlink($n);
}

if ($flag === false)
die("Nix zum Löschen da oder neues File zu groß");
?>
Mit Zitat antworten
  #7  
Alt 04.05.2007, 12:49:37
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Alte Bilder löschen, wenn die gesamte Grösse der Bilder > Maximal

[QUOTE=Taktaky;100922]und so habe ich das Script nun aber wird nichts gelöscht ![quote]
Klar, weil Du das nicht gelesen hast:
Zitat:
Du mußt also in einer Schleife das Verzeichnis lesen und ein Array so füllen:
Das, so dachte ich, kannst Du locker *selber* dazuprogrammieren.

Geändert von meikel (†) (04.05.2007 um 12:49:55 Uhr)
Mit Zitat antworten
  #8  
Alt 04.05.2007, 18:04:24
Taktaky Taktaky ist offline
Anfänger
 
Registriert seit: May 2007
Beiträge: 12
AW: Das, so dachte ich, kannst Du locker *selber* dazuprogrammieren.

Hi,

ich bin zwar html-Spezialist aber php leider nicht :(

Es wäre nett von Dir, wenn Du auch den Rest für mich erleidigt :)

Gruß

Geändert von Taktaky (04.05.2007 um 18:05:18 Uhr)
Mit Zitat antworten
  #9  
Alt 09.05.2007, 09:59:21
Taktaky Taktaky ist offline
Anfänger
 
Registriert seit: May 2007
Beiträge: 12
AW: Alte Bilder löschen, wenn die gesamte Grösse der Bilder > Maximal

So schwer habe ich gedacht, da ich diese Frage in mehrere Forums gestellt.

Ich muss dann wieder mein alte Script verwenden :(

Gruß
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
bilder löschen mal anders Atolos PHP Grundlagen 2 01.08.2005 12:24:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:08:29 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt