Moin an alle,
da ich von php null Ahnung habe, bräuchte ich mal Eure Hilfe bitte
Ausgangssituation ist eine Outdoorwebcam, die bei Bewegung ein Bild macht und per ftp auf einen webserver ( webcam/images ) speichert. Dabei wird das Bild immer mit "zeitstempel"ch01.jpg gespeichert ( Beispiel 20190131205105ch01.jpg )
Dieses Bild und zwar immer das zuletzt gespeicherte soll aber auf der webseite angezeigt werden, bräuchte dafür aber natürlich einen festen Namen wie z.b. image.jpg.
Gefunden habe ein php script, was per cron-job z.b. alle 5 Minuten angeschoben wird, aber nicht ganz passt zu meiner Situation.
Ausgangssituation zum php-script:
Die Cam erstellt in deinem Ordner "webcam", einen Ordner mit dem aktuellen Datum.
In diesem Ordner befindet sich wiederum ein Ordner "images".
Dort werden die Bilder des heutigen Tages abgelegt, mit vortlaufenden Dateinamen.
Da Du einen festen Dateinamen und einen festen Speicherort deines Webcam Bild brauchst, kommt der Cronjob ins Spiel.
Dieser Cronjob öffnet alle 5min die webcam.php datei. Beim Öffnen wird das aktuellste Bild kopiert, in image.jpg umbenannt und in dem Ordner "webcam" abgelegt.
Zum Schluss werden alle Ordner mit deren Inhalt in dem "webcam" Ordner gelöscht. Dies verhindert ein überlaufen des FTP Servers.
und hier das script dazu:
---------------------------------------------------------------------------------
<?php
// Fester Dateiname des Bildes
$imageName = 'image.jpg';
// Ordnerpfad ermitteln
$path = __DIR__ . '/' . date("Ymd") . '/images/';
// Dateien in Array einlesen
$files = glob($path . '*.jpg');
// sortieren, jüngstes Datum zuerst
rsort($files);
// jüngstes Bild kopieren falls vorhanden, sonst abbruch
if ( !isset($files[0]) ) {
echo 'Noch kein Bild vorhanden.';
exit;
}else{
copy($files[0], $imageName);
}
// Bilder und Verzeichnisse löschen
//Verzeichnisse einlesen die mit 20 beginnen
$dirs = glob( '20*', GLOB_ONLYDIR);
$numberDirs = count($dirs);
// Durch die Verzeichnisse laufen
foreach ($dirs as $dir){
$files = glob(__DIR__ . '/' . $dir . '/images/' . '*.*');
$numberFiles = count($files);
// Durch die Dateien laufen
foreach ($files as $file){
unlink($file);
}
echo 'in Verzeichnis ' . $dir . ', ' . $numberFiles . ' Dateien gelöscht' . "<br>\n";
rmdir ( __DIR__ . '/' . $dir . '/images');
rmdir ( __DIR__ . '/' . $dir );
}
echo $numberDirs . ' Verzeichnis/se gelöscht.' . "<br>\n";
?>
--------------------------------------------------------------------------
Meine webcam erstellt eben keinen neuen Ordner mit dem fortlaufenden Datum, sondern das script soll "nur" die neueste Datei im Ordner webcam/images umbenennen in image.jpg und speichern im Ordner webcam und dann alle noch vorhandenen Dateien im Ordner webcam/images löschen.
Ich hoffe mich verständlich ausgedrückt zu haben, danke fürs Lesen und auch für einen Lösungsvorschlag