Neuigkeiten:

still alive...

Hauptmenü

Datei löschen

Begonnen von mendieta, 12. März 2008, 11:54:05

Vorheriges Thema - Nächstes Thema

mendieta

Mahlzeit,..
ich mal wieder /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" /> Aaaalso folgendes Problem. Ich habe eine php-datei, die *.png-Bilder anlegt. Der name der Bilder besteht aus einer userid und dem aktuellen timestamp. (z.B. 1-1205318963.png) So,...nun möchte ich, dass wenn man diese Datei erneut aufruft, quasi das Bild aktualisiert, er die alte Datei löscht. Wie kriege ich das hin, ohne den timestamp der alten Datei irgendwo zu speichern? Ich möchte also die ältere Datei für diese userid löschen, damit nurnoch die Aktuelle gespeichert ist.
Vielen Dank schonmal im Vorraus.

------------------------------------------------


Fussball Bundesliga Tippliga


http://www.soccertip.de\" rel=\"external nofollow\">http://www.soccertip.de


webmaster@soccertip.de


-----------------------------------------------


glob() und unlink()

mendieta

hmm...wie ich dateien lösche weiß ich auch./uploads/emoticons/icon_razz.gif.c9907c8264378acad2086d30c88802a5.gif\" alt=\":-P\" />
es ging darum den timestamp im dateinamen herauszusuchen und dann die jeweilige datei zu löschen.
naja habs jetzt mit dem einrag in die DB gemacht, is zwar nen bissel umständlicher aber wat solls /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />

------------------------------------------------


Fussball Bundesliga Tippliga


http://www.soccertip.de\" rel=\"external nofollow\">http://www.soccertip.de


webmaster@soccertip.de


-----------------------------------------------


Powie

der Timestamp ist doch uninteressant, du musst doch nur die datei finden welche mit der ID im namen beginnt.....

mendieta

ja das war ja gerade die frage wiiiiiiiie ich das herauskriege /uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" /> stehe aufm schlauch.....
is zwar jetzt nich mehr fürs projekt interessant aber würde trotzdem gern wissen wie man das angehen würde /uploads/emoticons/icon_e_smile.gif.f7ec63a2b1c3d90a9415e40455642502.gif\" alt=\":-)\" />

------------------------------------------------


Fussball Bundesliga Tippliga


http://www.soccertip.de\" rel=\"external nofollow\">http://www.soccertip.de


webmaster@soccertip.de


-----------------------------------------------


k00ni

Lass dir den Inhalt des Ordners durchlaufen (opendir, readdir). Dann prüfst du bei jedem Element obs ne Datei ist (is_file). Dann gehst du in den Dateinamen und behandelst den wie einen String ...
Reicht das?  /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />

mahe

Ich frag mich gerade wozu der Timestamp im Namen gut ist wenn eh nur das neueste Bild da sein soll :ugly:

http://blog.mahe.at\" rel=\"external nofollow\">http://blog.mahe.at/wp-content/uploads/2007/06/88x31_1.jpg\" alt=\"88x31_1.jpg\">


Ja, diese Signatur dient zur Werbung!


Und dass ich meine Posts wiederfinde ...


Lass dir den Inhalt des Ordners durchlaufen (opendir, readdir). Dann prüfst du bei jedem Element obs ne Datei ist (is_file). Dann gehst du in den Dateinamen und behandelst den wie einen String ...[/quote]
Das ist extrem unperformant. Dafür ist eben glob() gut.
Ach ja: is_file und dann anschließendes Löschen ist nicht atomar -> Race Conditions.

Powie

Ich bin auch wie mahe dafür das an der Wurzel anzupacken, mir stellt sich da auch die Frage wieso jedesmal ein Bild mit Timestamp erstellen!?

mendieta

Das Ding ist folgendes /uploads/emoticons/icon_e_smile.gif.f7ec63a2b1c3d90a9415e40455642502.gif\" alt=\":-)\" />
Also...die Bilder werden ja ständig aktualisiert. Da die Bilder aber aus dem Cache gelesen werden und nich wie geplant direkt sichtbar aktualisiert werden, hänge ich einfach einen timestamp dran, damit er jedesmal quasi ein, vom Namen her, neues Bild lädt. So wird es direkt im Browser aktualisiert wenn man es aufruft. Hat den Vorteil, dass es nich diese blöden header Probleme gibt. (siehe meinen Thread zu \"Dynamische Bilder\"). Bei machen klappt es mit dem mitsenden des \"no-cache\", bei manchen aber nicht. Mit dieser Methode klappt es bei jedem.
So,....und nun möchte ich, da bei jeder Bildänderung ein quasi neues Bild erstellt wird, die Älteren löschen. Und dafür musste ich halt den Timestamp aus dem Dateinamen filtern. was mit aber im Nachhinein zu doof war /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
Jetzt habe ich ne Tabelle für die Timestamps erstellt, wo jeder User seinen aktuellen Timestamp zum Bild stehen hat. Und bevor der Timestamp geupdatet wird, wird halt die Bilddatei des alten Timestamps gelöscht....fertig aus /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />

------------------------------------------------


Fussball Bundesliga Tippliga


http://www.soccertip.de\" rel=\"external nofollow\">http://www.soccertip.de


webmaster@soccertip.de


-----------------------------------------------


Powie

jepp, jetzt verstehe ich was du meinst. Das selbe Problem gibt es beim Avatar Upload. Du kannst es lösen und trotzdem immer den gleichen Dateinamen benutzen:
 
 /uploads/emoticons/icon_e_wink.gif.c059000ae48ff64afa53be0962c021f2.gif\" alt=\":wink:\" />

mendieta

ja genau das hab ich auch zu erst probiert....aber komischerweise funzte es nich  :-/
naja läuft ja jetzt  /uploads/emoticons/icon_e_wink.gif.c059000ae48ff64afa53be0962c021f2.gif\" alt=\":wink:\" />

------------------------------------------------


Fussball Bundesliga Tippliga


http://www.soccertip.de\" rel=\"external nofollow\">http://www.soccertip.de


webmaster@soccertip.de


-----------------------------------------------


all your base are belong to us / Discord