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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
03.05.2007, 19:47:20
|
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)
|
03.05.2007, 20:15:09
|
|
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'?
|
03.05.2007, 21:45:30
|
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)
|
03.05.2007, 21:51:14
|
Anfänger
|
|
Registriert seit: May 2007
Beiträge: 12
|
|
AW: Alte Bilder löschen, wenn die gesamte Grösse der Bilder > Maximal
|
04.05.2007, 01:36:17
|
|
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
>>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ß");
|
04.05.2007, 11:55:53
|
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ß");
?>
|
|
04.05.2007, 12:49:37
|
|
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)
|
04.05.2007, 18:04:24
|
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)
|
09.05.2007, 09:59:21
|
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ß
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
HTML-Code ist aus.
|
|
|
Ä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 09:01:18 Uhr.
|