You need the computing power of a P1, 16 MB RAM and 1 GB Harddisk to run Win95. It took the computing power of 3 Commodore 64 to fly to the Moon. Something is wrong here, and it wasn't the Apollo.
Remember, if you have any trouble you can always send a telegram to the Right People.
“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.
Als je je downloads doorgeeft in je eigen while-lusje:
1
2
3
4
| while(!feof($fd)) { $buffer = fread($fd, 2048); print $buffer; } |
In dat lusje kan je dan gebruik maken van usleep() en microtime() om te zorgen dat er per seconde maar een bepaalde hoeveelheid bytes worden doorgegeven.
[ Voor 5% gewijzigd door FlowinG op 12-10-2004 16:58 ]
De snelheid is dan maximaal $bufsize / (1.000.000 * $speed) per seconde. Als je de speed op bijvoorbeeld 100.000 zet in het onderstaande voorbeeld haal je dus maximaal 81920 bytes / seconde. Het hangt er natuurlijk ook vanaf hoe hoog de snelheid van de gebruiker is die download (als hij al 1 seconde doet over die 8192 bytes dan is zijn snelheid in theorie slecht 4096 bytes / s)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <? /* $true_filesize = ammount of data really submitted $bufsize = how much to read every time */ $bufsize = 8192; $true_filesize = 0; $speed = 1000000; // usleep = 1 sec, max 8192 bytes/s while (($buf = fread($fp, $bufsize)) && !(connection_aborted())) { echo $buf; usleep($speed); flush(); $true_filesize += strlen($buf); } ?> |
"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan
mijn voorbeeld komt rechtreeks van files.tweakers.net, heb de laatste tijd niemand gehoort over corrupte dataFlowinG schreef op 12 oktober 2004 @ 16:58:
Krijg je dan geen corrupte data. Loopt het geheugen ook niet vol?
"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan
Dat kan ondervangen door met microtime() de tijd die echo en flush duren te meten. Daarmee kan je de waarde voor usleep() compenseren.Kees schreef op 12 oktober 2004 @ 16:59:Het hangt er natuurlijk ook vanaf hoe hoog de snelheid van de gebruiker is die download (als hij al 1 seconde doet over die 8192 bytes dan is zijn snelheid in theorie slecht 4096 bytes / s)