Jump to content
Sign in to follow this  
mendieta

Datei löschen

Recommended Posts

Mahlzeit,..


ich mal wieder ;-) 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.

Share this post


Link to post
Share on other sites

hmm...wie ich dateien lösche weiß ich auch.:-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 ;-)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

ja das war ja gerade die frage wiiiiiiiie ich das herauskriege :-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 :-)

Share this post


Link to post
Share on other sites

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? :-o

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Guest
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 ...

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.

Share this post


Link to post
Share on other sites

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!?

Share this post


Link to post
Share on other sites

Das Ding ist folgendes :-)


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 ;-)


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 ;-)

Share this post


Link to post
Share on other sites

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:




:wink:

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...