Intern ❘ Inhaltsverzeichnis ❘ Glossar ❘ Bausteine ❘ Linkliste ❘ Tutorials ❘ Kommentare
Thema: PHP - Alte Bilder (einer Webcam) löschen ➧ Artikel anzeigen
- TomPomm ✶✶✶✶✶ schrieb am Dienstag, den 6 August 2019 #1
- Vielen Dank für die vielen Snippets und Scripte auf deiner Seite.
Das Script auf dieser Seite funktioniert auch super.
Allerdings hab ich ein anderes Problem. Meine Webcam legt in dem Webcamverzeichnis eigene Unterverzeichnisse an. Nach Datum. Bspw: 20190805. Um dort die Bilder oder Videos zu löschen müsste das Script ja die Ordnernamen kennen. Oder zumindest die enthaltenen Dateien mit erkennen. Kannst du mir da bitte helfen? Danke im Voraus!
- Werner schrieb am Dienstag, den 6 August 2019 #2
- Hallo TomPomm,
möglich wäre das zum Beispiel so:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<?php
// Alle Unterverzeichnisse bis auf dem aktuellen Verzeichnis löschen
// Schema: 20190806, 20180312 (JahrMonatTag)
date_default_timezone_set("Europe/Berlin");
// Verzeichnis in denen die Unterverzeichnisse gespeichert sind
$verzeichnispfad = "webcam/";
$verzeichnisse = array_slice(scanDir($verzeichnispfad), 2);
foreach ($verzeichnisse as $verzeichnis) {
if (is_dir($verzeichnispfad . $verzeichnis)) {
if ($verzeichnis != date("Ymd")) { // 20190806
if (rmdir($verzeichnispfad . $verzeichnis)) {
echo 'Verzeichnis: ' . $verzeichnis . ' wurde gelöscht.<br>';
}
}
}
}
?>
Löscht alle Verzeichnisse die nicht von "heute" sind! Bitte erst an einem Testverzeichnis ausprobieren.
Wenn es wie gewünscht funktioniert, könnte man eine Cron (Cronjob) hinzufügen, der das Script täglich, wöchentlich oder monatlich aufruft.
- TomPomm schrieb am Dienstag, den 6 August 2019 #3
- Hallo Werner,
danke für die schnelle Hilfe!
Allerdings wird nix ausgeführt und lediglich gemeckert in der Log-Datei wegen der nicht leeren Verzeichnisse
"PHP message: PHP Warning: rmdir(./webcam/20190803): Directory not empty in ..."
- Werner schrieb am Mittwoch, den 7 August 2019 #4
- Ok, ich habs mit leeren Verzeichnissen getestet 😅
Folgendes funktioniert bei mir:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32<?php
// Alle Unterverzeichnisse bis auf dem aktuellen Verzeichnis löschen
// Schema: 20190806, 20180312 (JahrMonatTag)
date_default_timezone_set("Europe/Berlin");
// Verzeichnis in denen die Unterverzeichnisse gespeichert sind
$verzeichnispfad = "webcam/";
$verzeichnisse = array_slice(scanDir($verzeichnispfad), 2);
foreach ($verzeichnisse as $verzeichnis) {
if (is_dir($verzeichnispfad . $verzeichnis)) {
if ($verzeichnis != date("Ymd")) { // 20190806
if (delDateien($verzeichnispfad . $verzeichnis)) {
if (rmdir($verzeichnispfad . $verzeichnis)) {
echo 'Verzeichnis: ' . $verzeichnis . ' wurde gelöscht.<br>';
}
}
}
}
}
function delDateien($verzeichnis) {
$dateien = array_slice(scanDir($verzeichnis), 2);
foreach ($dateien as $datei) {
if (unlink($verzeichnis . '/' . $datei)) {
echo 'Datei: ' . $verzeichnis . '/' . $datei . ' wurde gelöscht.<br>';
}
}
return true;
}
?>
- TomPomm schrieb am Mittwoch, den 7 August 2019 #5
- Danke! Genau das funktioniert bei mir auch!🙂
- TomPomm schrieb am Mittwoch, den 7 August 2019 #6
- ups. vergessen. Deine Idee mit dem Cronjob hab ich natürlich gleich mit umgesetzt. Danke nochmal für die Hilfe bei diesem und den anderen Themen!
- Walter ✶✶✶✶✶ schrieb am Freitag, den 16 April 2021 #7
- Hallo. Das wäre das richtige php für mich. Allerdings sind meine Bilder nochmals in einem Ordner images gespeichert. Also zB /secure/20210413/images . Bitte wie würde da der Code lauten, probier schon eine Zeit auf Verdacht, komme nicht dahinter. Sollte alle "Tagesordner samt Inhalt" löschen, die älter als 3 Tage sind.
Danke im Vorab und bleibe gesund. LG Walter
- Werner schrieb am Freitag, den 16 April 2021 #8
- Folgendes funktioniert bei mir:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37<?php
// Alle Unterverzeichnisse die älter als 3 Tage sind löschen
// Schema: 20210413 (JahrMonatTag)
date_default_timezone_set("Europe/Berlin");
// Verzeichnis in denen die Unterverzeichnisse gespeichert sind
$verzeichnispfad = "secure/";
$verzeichnisse = array_slice(scanDir($verzeichnispfad), 2);
foreach ($verzeichnisse as $verzeichnis) {
if (is_dir($verzeichnispfad . $verzeichnis)) {
$strto = strtotime("-4 day", time());
$zeit = date("Ymd", $strto);
if ($verzeichnis <= $zeit) {
if (delDateien($verzeichnispfad . $verzeichnis)) {
if (rmdir($verzeichnispfad . $verzeichnis)) {
echo 'Verzeichnis: ' . $verzeichnis . ' wurde gelöscht.<br>';
}
}
}
}
}
function delDateien($verzeichnis) {
$verzeichnis .= "/images";
$dateien = array_slice(scanDir($verzeichnis), 2);
foreach ($dateien as $datei) {
if (unlink($verzeichnis . '/' . $datei)) {
echo 'Datei: ' . $verzeichnis . '/' . $datei . ' wurde gelöscht.<br>';
}
}
if (rmdir($verzeichnis)) {
return true;
}
}
?>
- Walter ✶✶✶✶✶ schrieb am Samstag, den 17 April 2021 #9
- Vielen Dank für die Hilfe. Läuft perfekt !!!
Nur in Zeile 13 habe ich eine 3 geschrieben anstatt 4 ($strto = strtotime("-4 day", time()) ;)
Wird mittels Cronjob dann abgearbeitet. Super danke, Walter
- Werner schrieb am Samstag, den 17 April 2021 #10
Zitat von Walter:
Sollte alle "Tagesordner samt Inhalt" löschen, die älter als 3 Tage sind.Zitat von Walter:
Nur in Zeile 13 habe ich eine 3 geschrieben anstatt 4 ($strto = strtotime("-4 day", time())
if ($verzeichnis <= $zeit) { ...
Sicher, dass das dann nur Dateien gelöscht werden die älter als 3 Tage sind? 😉