Fileupload und Zeit?

Maik20

Erfahrenes Mitglied
Hallo zusammen,

in PHP gibt es die Möglichkeit über ein Formular einen Dateiupload auf den Server zu realisieren. Das klappt auch recht gut. Ich würde jetzt aber gerne die Zeit messen vom starten des Uploads bis der Upload abgeschlossen ist.

Hat dazu jemand einen Tipp?

Ich dachte zuerst daran die aktuelle Systemzeit in das Formular reinzuschreiben und mit zu übergeben. Geht jedoch nicht, da der Nutzer vielleicht 5 Minuten braucht bis er die Datei ausgewählt hat und auf absenden klickt.
 
Einfach am Anfang des Upload Skripts die Zeit speichern und am Ende schauen, wieviel Zeit vergangen ist zwischen Jetzt und dem gespeicherten
 
Ich dachte zuerst daran die aktuelle Systemzeit in das Formular reinzuschreiben und mit zu übergeben. Geht jedoch nicht, da der Nutzer vielleicht 5 Minuten braucht bis er die Datei ausgewählt hat und auf absenden klickt.

Und wie gehe ich mit der Zeitverzögerung durch den User um?
 
Er schickt doch ein Formular ab oder nicht, danach beginnt erst der Upload der Datei, oder?

Wenn ja, dann einfach bevor der Upload beginnt die Zeit speichern und danach dann vergleichen.

Verstehe ich irgendwas nicht?
 
Nach dem Klick auf den Senden-Button wird die Datei per HTTP-POST hochgeladen, und sobald das fertig ist, wird erst das Script ausgeführt --> geht so nicht

Der Ansatz die Systemzeit mitzuübertragen würde in Verbindung mit Javascript umsetzbar sein. (Systemzeit an Javascript übergeben, im Script nen timer mitlaufen lassen, beim Abschicken des Formulars von Javascript die errechnete timestamp setzen lassen)
 
Das Problem ist doch das der Upload startet sobald ich auf den Submit-Button klicke (Wenn ich das Upload-Prinzip richtig verstanden habe). Ich also Zwischen dem Submit-Button Klick und bis die Datei hochgeladen ist ich in PHP nicht eingreifen kann um eine Startzeit zu speicher.

@drucko:

Danke für den Tip mit JavaScript. Leider bin ich da nicht wirklich fit. Hast du vielleicht etwas code für mich an dem ich mich langhangeln kann?
 
Hi Maik20!

Rein auf PHP basierend ist dies auch möglich, du mußt nur eine Daten durchschleusende Datei oder Befehlskette zwischen schalten. Zwar wird es da zu ein paar Mikrosekunden Abweichung kommen, aber das dürfte ja bestimmt nicht stören oder?

Also gehe dazu wie folgt vor:

1. User wählt die Datei zum Upload aus.
2. Du sendest die ausgewählten Dateidaten zu einer Datei oder Befehlskette mit dem Submit-Button, wo du die Zeit nimmst, welche du am besten in dem Array $_SESSION['start_upload'] ablegst.
3. Nun sendest diese gesamten Daten dann sofort, mit einem reload weiter zu dem uploadenten Script.
4. Nach dem erfolgreichen beenden des uploaden, wirst du ja bestimmt auch wieder einen reload haben. Diesen reload setzt du auf eine Datei oder eine Befehlskette, welche die Endzeit abnehmen kann. Diese legst du zwischen zeitlich in $_SESSION['end_upload'] ab, falls du diese auch auf einer folgenden Seite nochmal verwenden willst.

Ich hoffe mal, dass dir dies weiterhilft und ich bin mir sehr sicher, dass dies funktionieren müßte, obwohl ich dies bisher noch nie getestet habe.

Gruß Matze202.
 
Hab auch erst gedacht dass das so geht @Matze, habs allerdings nicht getestet, aber ich denk das wird nix, weil mann das, was im <input type="file"> ausgewählt wurde nicht an das nächste Script weitergeben kann (in $_POST wird das nicht übertragen und in $_FILES hat man _nach_ dem Upload dann auch nur den Dateinamen selber)

MfG
 
Mhhh wenn du theoretisch nicht mit type='file' arbeitest, sondern es so hinbekommst, dass dort im Feld dann der Pfad zur Datei steht, dann könnte man dies mit dem Script machen was sich dazwischen schaltet.
Habe eigentlich noch nie etwas mit einem Upload von dateien gemacht, deswegen kenne ich mich da nicht so aus
 
Ne das geht *zum Glück* auch nicht ;)
Wär ja ne krasse Sicherheitslücke!

edit:

Der einzig mehr oder weniger einfach umsetzbare Lösungsansatz, der mir einfällt ist folgender:
(der allerdings nicht ohne JS funktioniert)
Beim Ausgeben der Seite lieferst du einem Javascript einen timestamp mit, und das Script muss dann auch gleich, ohne Interaktion durch den Benutzer, gestartet werden. Das Script selbst ist ein timer, der im Sekundentakt hochzählt und dann beim Senden des Formulars (z.B. mit onClick auf den Senden-Button) den timestamp + Timerwert in ein hidden-Feld des Formulars einträgt.
In PHP kann man dann die Zeitdifferenz berechnen, die mehr oder weniger genau die Uploadzeit wiedergibt.
 
Zuletzt bearbeitet:
Zurück