Downloadzeit berechnen |
The Doctor
Pixelschubser Threadstarter
Beiträge: 9 |
Hi!
Ich habe bisher schon selber ein Script mir zurecht gebastelt, um die Größe eines PHP-Files auf irgendeinen Server auslesen zu lassen.
Siehe hier: 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39: | = 1024*1024*1024) {
return round($size/(1024*1024*1024), $decimals)." GB";
}
if($size >= 1024*1024) {
return round($size/(1024*1024), $decimals)." MB";
}
if($size >= 1024) {
return round($size/(1024), $decimals)." KB";
}
return $size." byte";
} }
echo get_size("http://$files->url", 2); ?> |
Wie kann ich das Script so anpassen, so dass ich die Download-Zeit noch berechnet bekomme?
Also wie lange dauert es mit ISDN, DSL 1000, usw...
Wäre super nett, wenn mir hier einer helfen könnte.
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Die Verbindungsgeschwindigkeiten werden meist in Bit angegeben - 8 Bit sind 1 Byte. Da du die Bytegröße der Datei hast, kannst du dann einfach rechen.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
The Doctor
Pixelschubser Threadstarter
Beiträge: 9 |
Das ist mir schon klar.
Ich habe hier schon was gefunden:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51: | 86400,
"hour|s"=>3600,
"minute|s"=>60,
"second|s"=>1
);
if($seconds < 1) {
return "< 1second";
} else {
$show = FALSE;
$ausg = "";
foreach($units as $key=>$value) {
$t = round($seconds/$value);
$seconds = $seconds%$value;
list($s, $pl) = explode("|", $key);
if($t > 0 || $show) {
if($t == 1) {
$ausg .= $t." ".$s.", ";
} else {
$ausg .= $t." ".$s.$pl.", ";
}
$show = TRUE;
}
}
$ausg = substr($ausg, 0, strlen($ausg)-2);
return $ausg;
}
}
}
$values = array("DSL"=>768,
"ISDN"=>128,
"Modem"=>56.6
);
$size = filesize($file);
$ausg = round($size/(1024), 0)." KB ";
$size *= 8;
foreach($values as $key=>$value) {
$time = sec_format($size/($value*1024));
$ausg .= $time." @ ".$value." kBaud (".$key.") ";
}
return $ausg;
}
echo download_time("../datei1.zip");
echo " ";
echo download_time("../datei2.zip");
echo " ";
echo download_time("../datei3.zip");
?> |
Mein Problem liegt jedoch in den letzten Zeilen bei echo download_time.. Ich will da ja wieder "http://$files->url" als Wert eingeben. Jedoch funktioniert das aber nicht. Deswegen wende ich mich ja an euch da draussen, weil ich leider nicht der beste Programmierer bin.
Bitte helft mir
|
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Im ersten Beitrag hast du eine eigene Funktion get_size(), welche einen HEAD-Request auf einen Webserver macht. Im deinem zweiten Beitrag jedoch nutzt du plötzlich die PHP-Funktion filesize, welche nur für lokale Dateien funktioniert. Warum nutzt du nicht mehr deine eigene Funktion?
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
The Doctor
Pixelschubser Threadstarter
Beiträge: 9 |
Junge! Ich nutze momentan nur das erste Script! Ich will lediglich das zweite Script nutzen können. Daher war nur meine Frage, wie ich das machen kann ;)
|
 Profil
Website
Editieren
Zitieren
|
The Doctor
Pixelschubser Threadstarter
Beiträge: 9 |
Ich habe jetzt folgendes gemacht:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47: | 86400,
"hour|s"=>3600,
"minute|s"=>60,
"second|s"=>1
);
if($seconds < 1) {
return "< 1second";
} else {
$show = FALSE;
$ausg = "";
foreach($units as $key=>$value) {
$t = round($seconds/$value);
$seconds = $seconds%$value;
list($s, $pl) = explode("|", $key);
if($t > 0 || $show) {
if($t == 1) {
$ausg .= $t." ".$s.", ";
} else {
$ausg .= $t." ".$s.$pl.", ";
}
$show = TRUE;
}
}
$ausg = substr($ausg, 0, strlen($ausg)-2);
return $ausg;
}
}
}
$values = array("DSL"=>768,
"ISDN"=>128,
"Modem"=>56.6
);
$size = get_size($url);
$ausg = round($size/(1024), 0)." KB ";
$size *= 8;
foreach($values as $key=>$value) {
$time = sec_format($size/($value*1024));
$ausg .= $time." @ ".$value." kBaud (".$key.") ";
}
return $ausg;
}
echo download_time("http://$files->url");
?> |
Jetzt funktioniert allerdings die Umrechnung der Zeit nicht mehr! ArrgghH! Naja ich komme schon mal voran..
Siehe HIER
Diese Nachricht wurde geändert von: The Doctor |
 Profil
Website
Editieren
Zitieren
|
subjective
Forenheld
Beiträge: 844 |
Ich bin nicht dein Junge.
Der Rückgabewert von get_size() ist keine Zahl, sondern ein formatierter String, welcher dort ab Zeile 28 erstellt wird. Du mußt natürlich die Umwandlung entfernen um die direkte Bytezahl zu bekommen, mit welcher du dann rechnen kannst.
---
Weaverslave
|
 Profil
Website
Editieren
Zitieren
|
The Doctor
Pixelschubser Threadstarter
Beiträge: 9 |
mmh wie muss ich das denn machen.. Bin bisher immer gut gefahren, mit die Codes zusammenzubasteln ;)
|
 Profil
Website
Editieren
Zitieren
|