35801
Goto Top

Bei onLoad Formular absenden...

Folgendes Problem...

Ich bastle gerade einen File-Upload und möchte die ungefähre Upload-Zeit abschätzen...

Das einzige Probelm ist, dass ganze Ding MUSS ohne AJAX, PHP5 oder sonstigen Patches und Erweiterungen auskommen.

Ich habe folgesndes Script gebastelt...

Ziel der Übung:
Sobald ie Datei geladen ist soll das Formular gesendet werden.

Dabei wird Absende-Zeit und Ankunfts-Zeit gespeicher und die Differenz errechnet.

Dann kann ich den Leuten zumindes sagen...

1MB hat 6 sek. gebraucht und du willst 67 MB uploaden das dauert XYZ Sekunden Meister...

Das Script sendet das Forular nur nicht autom. ab...

Ich glaub der Fehler liegt im Java-Script... ABER WO???


SCRIPT:
<html>

<head>
<title>speed</title>
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">

<?PHP
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
?>

<script type="text/javascript">
<!--
function send()
{
document.form.submit();
}
-->
</script>

</head>

<?PHP

echo '<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red" onLoad="send();">';

if($upl == ""){
echo '<form name="test" method="post" action="speedtest.php?upl=test">';
echo '<textarea name="test" cols="1" rows="1">';
$j=0;
for ($i = 0; $i < 1024*1024; $i++){
$j++;
echo $j;
if($j > 8){ $j = 0; }
}
echo '</textarea>'."\n";
echo '<input type="hidden" value="'.microtime_float().'" name="startzeit">';
echo '<input type="submit" value="weiter...">';
}
else{
echo $test;
}

?>

</body>

</html>

Content-Key: 74999

Url: https://administrator.de/contentid/74999

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: Arano
Arano 04.12.2007 um 17:34:27 Uhr
Goto Top
Moin diaz

Deine send()-Funktion ist falsch, schau dir mal http://de.selfhtml.org/javascript/objekte/forms.htm an.

Was mich noch interessieren würde, woher willst du wissen wie Groß die Datei wirklich ist ?
Ich weiss von PHP her das ich dort die Dateigröße erst ermitteln kann wen sie komplett hochgeladen ist, aber dann ist der Upload bereits abgeschlossen und alles was ich ausgeben könnte währe: "noch 0 Sekuden".
Wie löst du das Problem bei dir ?

Gruß Arano
Mitglied: 35801
35801 04.12.2007 um 18:19:49 Uhr
Goto Top
Ganz einfach....

Ich mach mit einem 1MB-Testdaten-Formular eine Zeitmessung und rechne dann hoch:
1MB ... 13,5 Sek => 10MB ... 135 Sek.

Dann lass ich einen Countdown laufen von 135 Sek. auf 0 und dann geb ich die Meldung aus:
Verschiebe Daten in das Projektverzeichnis und führe Datenprüfung durch. Bitte warten...

Wichtig ich Rechne zur Zestzeit noch XX% dazu um sicherzugehen...

Je nach Tests am Server...

Mein Problem ist, dass die Kunden viele mit Mac / Linux zugreifen und ich mit AJAX (Java) einen 20-Fronten-Krieg anfange und das kann ich mir nicht leisten bei ca. 3,5MB Projektgröße (rein PHP/HTML-Quelltext)


Danke für deinen Tipp!

War schon spät und ich hab's nicht mehr gesehen, dass ich
document.test.submit();
hätte schreiben sollen...

Hab den Fehler aber mittlerweile schon gefunden gehabt...