Esimerkkikoodi täällä.
- Koodi: Valitse kaikki
<?php
$aika = 1; //aika sekunteina liikenteen tarkastamiseen (suurempi tarkempi)
$verkkokortti = "eth0"; //laita verkkorttisi tähän
$kerrat = 1;
$tdsto = @fopen("/proc/net/dev", "r");
if ($tdsto) //tarkastetaan avaamisen onnistuminen
{
while (!feof($tdsto))
{
$rivi = fgets($tdsto, 4096);
$rivi = preg_replace('/\s\s+/', ' ', $rivi); //poistetaan turhat välilyönnit
if (stristr($rivi, $verkkokortti) && $kerrat == 1)
{
//$iface, $recbyt, $recpack, $recerr, $recdrop, $recfifo, $recframe, $reccompr, $recmulti, $senbyt, $senpack, $senerr, $sendrop, $senfifo, $senframe, $sencompr, $senmulti
$raaka1 = explode(":", $rivi, 2); //erotetaan luvut ja verkkokortti
$tiedot1 = explode(" ", $raaka1[1]); //tehdään luvuista taulukko
rewind($tdsto); //kelataan tiedoston alkuun (kyseessä ei ole "oikea tiedosto" joten ei tarvitse sulkea ja avata uudestaan)
sleep($aika); //odotetaan seuraavaa tarkastusta
$kerrat = 2; //seuraavalla kerralla eri hommat
}
elseif (stristr($rivi, $verkkokortti) && $kerrat == 2)
{
$raaka2 = explode(":", $rivi, 2);
$tiedot2 = explode(" ", $raaka2[1]);
}
}
fclose($tdsto);
}
$kerroin = 1 / $aika; //kertoimet oikein
$nopeussis = $tiedot2[0] - $tiedot1[0]; //vähennetään myöhempi liikenne aikaisemmasta
$nopeussis = round($nopeussis * $kerroin / 1024, 1); //kerrotaan ajalla ja jaetaan kilotavuiksi
$nopeusulo = $tiedot2[8] - $tiedot1[8]; //samat ulos
$nopeusulo = round($nopeusulo * $kerroin / 1024, 1);
//seuraava tarkastus on ettei tule negatiivisia lukemia (liikennelaskuri nollautuu välillä)
if ($nopeusulo < 0)
{
$nopeusulo = 0;
}
if ($nopeussis < 0)
{
$nopeussis = 0;
}
echo "Sisään: $nopeussis kt/s, ulos: $nopeusulo kt/s";
?>
Jos verkkokortti eth0 ei toimi, kokeile eth1 jne. tai käytä seuraavaa koodia ja käytä sitä ethX, jonka perässä on muuta kuin nollaa. Ei siis lo kuitenkaan. Ulos pitäisi näkyä tämmöistä.
- Koodi: Valitse kaikki
<?php
$kahva = fopen("/proc/net/dev", "r");
while (!feof($kahva))
{
$rivi = fgets($kahva, 4096);
echo "$rivi <br />";
}
fclose($kahva);
?>
