Mitenkäs tehdään pieni php skripti joka laskee tiedoston keskimääräisen latausnopeuden parilla eri nopeudella, esim. megan tai kahden megan netillä.
Tällaisia on mm. Peliplaneetassa ja Jonnewebissä.
Itse aloittaisin sen ainakin näin:
<?php $koko = $_POST['koko']; ?>
ja sitten tuo koko pitää varmaan jakaa jollakin luvuilla, mutta milläköhän...?
Selvitä montako tavua (byte) sekunnissa nämä nopeudet (esim XXXX kbit/s, Mbit/s) ovat, sitten loppu onkin ihan yhtä simppeliä matikkaa.
Wikipedia on hyvä tietolähde
Luultavasti tiedät tiedoston koon, kutsutaan sitä vaikka nimellä koko. Lisäksi tiedät varmaankin tiedonsiirtonopeuden, jolle haluat laskea sen kuluvan ajan, kutsutaan tätä vaikka nimellä nopeus. Näistä halutaan selvittää tuo kuluva aika, jota voidaan luonnollisesti kutsua nimellä aika.
Keskimääräinen nopeushan saadaan helposti kaavasta:
nopeus = koko / aika
Ja kappas... meillä on yhtälö, josta saadaan ratkaistua aika:
aika = koko / nopeus
Jäljellä onkin enää tuon edellisen rivin naputtelu koodiksi (muista olla tarkkana yksiköiden kanssa).
Hmm.. jossain oli joku SVG-tiedosto, joka oli Open Source.. se laski mm. internetyhteytesi nopeuden suuntaan ja toiseen.
Mutta asiaan.. tässä malliratkaisu: http://aariadne.com/uploadform/
Noniin, kokeilin noita Leve80:n ja Samin ohjeita, lopputuloksena tälläinen:
<?php $koko = 15208546304; $nopeus = 131072; $aika = $koko / $nopeus; $nopeus = $koko / $aika; $aika = $aika / 60; $aika = $aika / 60; echo $aika; ?>
Eli nopeus on yhden megan netistä (Google antoi lukemat: 1 megabit = 131 072 bytes) ja koko on 800 megabitin tiedostosta (1813 megabytes = 15 208 546 304 bits). Sekä lisäsin tuohon vielä, että se jakaa sen 60:lla 2 kertaa, eli muuttuu sekunnit tunneiksi. Tämä tulostaa kuitenkin lukeman "32.2311111111", ja Jonnewebin laskurin mukaan latauksessa kestäisi 4 tuntia, 1 minuutti ja 45 sekuntia megan netillä. Eli eroa löytyy reilut 28 tuntia... Mikä meni vikaan ;O
Siis tuossa jaat tuon 15 208 546 304 bittiä 131072 tavulla, mutta et huomioi eri yksiköitä mitenkään. Muutenkin ihmetytti minua viestissäsi, että mistä tuo lukema 1813 megatavua tulee. Lisäksi tiedostojen koot yleensä ilmoitetaan tavuina, ei bitteinä (800 megabittiä).
Kuitenkin, jos tuon 131072 tavua kertoo kahdeksalla, eli muuttaa sen biteiksi, niin tuloksen pitäisi tulla oikein, sillä saamasi tulos on 8 kertaa liian suuri.
Tarkkuutta siis yksiköiden ja niiden muunnosten kanssa.
Huom!
Sami kirjoitti:
(muista olla tarkkana yksiköiden kanssa)
Tämmöiset laskut kannattaa pyöritellä ensin paperilla, jolloin yksiköitä on helpompi sieventää.
<?php $koko = filesize("joana1to70horde_for2.3.2.rar") / 1024; // 17 340 kB (16,9 mb) $yhteys = 0.5; // yhteyden nopeus mbit/s, eli täss siis 512kbit/s $nopeus = ($yhteys * 1024) / 8; // 64 kB/s $aika_sekunneissa = ceil($koko / $nopeus); echo $aika_sekunneissa; ?>
Itse saat kyllä muokata tuon tulostuksen käyttäjäystävällisemmäksi.
E: Niin ja kuten Päärynämies sanoikin jo, ei kannata sekoittaa bittiä ja tavua. 1 megatavu = 8 megabittiä. Englanniksi nämä termit voi mennä helposti sekaisin, koska bitti on bit ja tavu on byte.
Aihe on jo aika vanha, joten et voi enää vastata siihen.