Kompliziertes logistisches Problem: Dateien erst da, dann weg...
J_M_G
- webserver
Hallo liebe Selfer!
Ich habe ein sehr seltsames Problem mit verschwundenen Dateien, und ich komm ihm leider nicht auf die Schliche.
Hintergrund ist Folgender:
// find a free file name by generating a random one
while(true)
{
// using PHP4 !!!
$str_baseFileName = uniqid('');
// look up if a file with that name already exists
if (!file_exists('tmpUploads/'.$str_baseFileName.'.jpg'))
{
break;
}
}
dem User gebe ich sofort den temporären Dateinamen per Ajax zurück, so dass er das Bild anzeigen und sehen kann. Funktioniert ganz prima. Immer!
(Apaches "CheckSpelling" ist deaktiviert, es ist also exakt die richtige Datei!)
per JavaScript erzeuge ich ein hidden-Feld für den temporären Dateinamen. Also als zusätzliches Formularfeld!
wenn der User zufrieden ist (und eventuell noch mehr Bilder hochgeladen hat), speichert er sein Formular mittels ganz gewöhnlichem HTTP-POST.
[SCHRITTE 1-4 beliebig oft wiederholbar]
Von Schritt 1-5 arbeiten wir also permanent mit derselben ID (z.B. "4c48b821f05a2". Und Schritt 1-4 funktionieren ganz prima, in Schritt 5 kommt diese ID auch auf dem Server an (hab ich geloggt).
Mein Verständnis der Technik sagt mir, dass irgendwo in Schritt 5 ein logischer Fehler dafür sorgt, dass das Bild vorzeitig gelöscht oder verschoben wird. Ich konnte aber nichts Derartiges finden!!! Und in 99% geht's ja auch (2000 Bilder pro Tag, ca. 15 Fehlschläge). Rekonstruieren (mit Bildern, die mir User geschickt haben) lässt sich's auch nicht.
Habt ihr irgendeine Idee, ob es Umstände gibt, in denen Unix Dateien nur eine gewisse Lebenszeit zugesteht? Oder irgendwelche anderen Ideen???
Martin
Hallo J_M_G,
Habt ihr irgendeine Idee, ob es Umstände gibt, in denen Unix Dateien nur eine gewisse Lebenszeit zugesteht? Oder irgendwelche anderen Ideen???
Zeig uns mehr Code der anderen Teilschritte.
ciao
romy
Hi!
Habt ihr irgendeine Idee, ob es Umstände gibt, in denen Unix Dateien nur eine gewisse Lebenszeit zugesteht? Oder irgendwelche anderen Ideen???
Bei tmpfile() ist mir ein automatisches Löschen am Scriptende bekannt, aber das scheint ja bei dir nicht zur Anwendung zu kommen, denn deine Dateien leben im Normalfall ja über mehrere Requests hinweg. Ansonsten fällt mir kein typisches Szenario ein, bei dem Dateien verschwinden. Siehst du, wenn du dein Logging mal genauer betrachtest, ob zu fraglichen Zeitpunkten vielleicht Konkurrenzsituationen vorhanden sein können? Wenn sich keine (potentiell) problematische Stelle im Code erkennen lässt, würde ich das Logging verfeinern wollen und jede Menge Einzelheiten festhalten, damit vielleicht ein unvorhergesehenes Userverhalten, Programmablauf oder sonstwas erkannt werden kann.
Lo!
Hi,
- bei mir können Leute mittels Ajax Bilder temporär(!) hochladen. Funktioniert ganz prima. Die Bilder landen in einem öffentlich zugänglichen TMP-Verzeichnis
*Wie* landen sie da?
Von Schritt 1-5 arbeiten wir also permanent mit derselben ID (z.B. "4c48b821f05a2".
Auch wenn Schritt 1-4 beliebig oft zwischendurch wiederholt werden, wie du schriebst?
Und Schritt 1-4 funktionieren ganz prima, in Schritt 5 kommt diese ID auch auf dem Server an (hab ich geloggt).
Nur eine ID, obwohl ggf. mehrere Bilder hochgeladen wurden?
MfG ChrisB