Archiv verlassen und diese Seite im Standarddesign anzeigen : [Suche] Script, dass alle Dateinen in Unterordner verschiebt ausser der neuesten
Stefanie2 07-04-2010, 16:15 Hallo,
ich geb zu ich bin noch ein Scriptblödi.
Bin schon stolz ein Script in meine Seite eingebaut zu haben welches nur das neueste Bild anzeigt.
Das ganz ist für 4 Webcams die ich darstelle. Alle haben ein eigenes Unterverzeichnis.
Jedoch wird mein Script ab ein paar hundert Dateien echt lahm wegen der Auswertung welche die neuste ist.
Ich hab das Script auch in der Version: Zeig neueste an und lösch den Rest.
Da ich die Bilde aber benötige suche ich aber:
Zeig neustes Bild an und verschiebe alle anderen in Unterverzeichnis "Sicherung"
Hat da jemand vielleicht etwas fertiges für mich?
Bei Bedarf setz ich auch gern den vh. Code hier rein.
fireweasel 10-04-2010, 00:20 ...
Ich hab das Script auch in der Version: Zeig neueste an und lösch den Rest.
Wie funktioniert der "lösch den Rest"-Teil des Scripts?
Wahrscheinlich klapperst du das Verzeichnis Datei für Datei ab und löschst jede Datei, die nicht den gewünschten Kriterien entspricht. Dann sollte es kein Problem sein, die Löschfunktion durch den Aufruf von rename() (http://php.net/manual/de/function.rename.php) zu ersetzen. Diese Funktion verschiebt auch Dateien ...
Stefanie2 11-04-2010, 20:10 Freu, das jemand geantwortet hat :) DANKE
Also mein Code sieht so aus:
(Vielleicht könnte man unlink durch rename ersetzen? Ich möchte aber auf dem Server nicht rumexperimentieren.
<?PHP
$verzeichnis = './xyz/';
$tempfile = "";
$verz = opendir($verzeichnis);
while($file = readdir($verz))
{
$verzfile = $verzeichnis.$file;
$info = @getimagesize($verzfile);
if($info[2]==(1||2||3) && $file != "." && $file != ".." && !is_dir($file))
{
$tzeit = filemtime($verzfile);
if($tzeit>$tempzeit)
{
$tempfile = $file;
$tempzeit = $tzeit;
$breite = $info[0];
$hoehe = $info[1];
$datumanz = date("d.m.Y - H:i", $tzeit);
}
}
}
closedir($verz);
//alle alten Dateien löschen
$verz = opendir($verzeichnis);
while($file = readdir($verz))
{
if($file !=$tempfile && $file != "." && $file != ".." && !is_dir($file))
{
@unlink($verzeichnis.$file);
}
}
closedir($verz);
//Ausgabe
if($tempfile==""){
$anzeige = 'Kein Bild'; //Text wenn kein Bild
}else{
//Ausgabe wenn Bild / Datum über dem Bild
$anzeige = 'Update am: '.$datumanz.' Uhr<br><img src="'.$verzeichnis.$tempfile.'" border="0"><br>';
}
echo $anzeige;
?>
AmicaNoctis 12-04-2010, 00:36 Hallo,
$info[2]==(1||2||3)
das macht mit Sicherheit nicht das, was du denkst. Vermutlich meinst du
($info[2] >= 1 && $info[2] <= 3)
oder
in_array($info[2], array(1, 2, 3))
Gruß,
Amica
Stefanie2 13-04-2010, 08:37 Ich weiß, um ehrlich zu sein, nicht was der Abschnitt macht.
Habe das Script gefunden und nach meinen Bedürfnissen angepasst.
PHP ist etwa wie mein Schulfranzösisch: Am Ende bekomme ich mein Brot, aber meistens lacht der Bäcker.
Der Code funktioniert jedenfalls prima. Er wird nur, bedingt durch die wachsende Zahl der Bilder, logischerweise langsamer.
Aktuell habe ich mir mit einem FTP Batch geholfen. Das holt die Dateien auf den Lokalen Rechner und löscht sie anschließend.
Eine PHP Online Lösung wär mir jedoch lieber.
Weiß echt keiner von euch wie man das umschreiben müsste? (rename?)
*move* nach Projekthilfe.
boeserfrosch 15-04-2010, 13:23 Ersetze
unlink($verzeichnis.$file);
durch
rename($verzeichnis.$file,$verzeichnis."sicherung/".$file);
"sicherung" kannst du dann durch den Unterordner ersetzen in welchem du deine Dateien dann haben willst.
Stefanie2 15-04-2010, 16:19 Danke, dachte nicht, dass es so simpel.
Nur ein Fehler ist noch drin.
Das Unterverzeichnis Sicherung ist für ihn auch ein File und er möchte es mit sichern, was logisch nicht geht. Daraus folgt dann:
Warning: rename(./verzeichnis/sicherung,./verzeichnis/sicherung/sicherung) [function.rename]: Invalid argument in /mnt/web1/11/12/56492123/htdocs/m/verschieb.php on line 92
Wie kann ich ihm sagen, dass er nur files und keine Verzeichnisse nimmt?
Stelle mir das etwa so vor:
rename($verzeichnis.$file.".JPG",$verzeichnis."sicherung/".$file);
Gibt es so etwas?
AmicaNoctis 15-04-2010, 16:24 PHP: is_file - Manual (http://php.net/is_file)
PHP: is_dir - Manual (http://php.net/is_dir)
Stefanie2 15-04-2010, 19:59 Hallo,
könntest du mir nen Tipp geben?
Muss ich das in die IF Zeile einfügen?
Vielleicht ein Beispiel?
Ich kriegs nicht hin :(
AmicaNoctis 15-04-2010, 20:18 Mein Tipp: Klick nochmal die Links an und sieh dir dort die vielen, vielen Beispiele an, die es vollkommen unnötig machen, dass ich dir jetzt noch eins gebe.
boeserfrosch 15-04-2010, 20:35 Die Überprüfung ist eigentlich schon in der if-bedingung drin.
Siehe "&& !is_dir($file)" in:
if($file !=$tempfile && $file != "." && $file != ".." && !is_dir($file))aber du kannst ja noch drauf prüfen ob es tatsächlich eine Datei ist.
if($file !=$tempfile && $file != "." && $file != ".." && !is_dir($file) && is_file($file))
Stefanie2 15-04-2010, 20:50 Dankeschön an den lieben Frosch. Das geht anstandslos.
Ich glaub ich geb das auf mit PHP und bezahl lieber jemanden der sich damit auskennt. Auf Dauer schone ich damit wohl nerven.
Wirklich was lernen tu ich bei meinen seltenen Einsätzen auch nicht. In den Zeiträumen dazwischen vergess ich ja mehr als ich gelernt hab :D
Nochmals lieben Dank
|