Likes Likes:  0
Resultaten 1 tot 10 van de 10
Geen
  1. #1
    Bandwidth stats / eigen cp
    Banned
    18 Berichten
    Ingeschreven
    04/09/03

    Locatie
    Amsterdam

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Thread Starter

    Bandwidth stats / eigen cp

    Ik ben bezig met me eigen CP te maken voledig in php.
    Nu wil ik elke dag via crontab een php script laten draaien die dus via de logfiles van apache de bandwidth per user berekend.

    Nu vraag ik me af is dit wel de beste / makkenlijkste manier om dit te doen?

    Ik wil dus 1x per dag de bandwidth berekenen en die in de client zijn mysql row updaten.

    Alle reacties / tips zijn welkom.

    EDIT:
    iets meer info

    Ik maak dus per user geen aparte linux user aan maar alleen een nieuwe map in /var/www/
    Dus via de path kan je zo de eerste dir eruit grappen zodat je de username van die persoon weet.
    Met die username kan je vanuit de mysql database info halen.
    Laatst gewijzigd door ChucKz; 08/09/03 om 19:33.

  2. #2
    Bandwidth stats / eigen cp
    geregistreerd gebruiker
    1.073 Berichten
    Ingeschreven
    15/07/03

    Locatie
    Haarlem

    Post Thanks / Like
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    21 Berichten zijn liked


    Naam: Pim
    Bedrijf: RealHosting
    Functie: Ondernemer
    Registrar SIDN: ja
    KvK nummer: 39093099
    Ondernemingsnummer: nvt

    Ik denk dat PHP te traag is om alle logfiles door te spitten op bandbreedte verbruik...
    Kijk eens bij oplossingen zoals webalizer. Zij zijn ook niet gemaakt in bash. Misschien dat je wat code van ze kunt 'lenen'.

  3. #3
    Bandwidth stats / eigen cp
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Ik ben ook even bezig geweest om de webalizer.hist uit te lezen met PHP
    Hieronder een script van mij wat nog niet goed werkt omdat er geen spatie achter de regels staat.
    Als ik handmatig achter elke regel een spatie zet dan wertk het..
    - hier het script -

    <?
    function maand($invoer) {
    $invoer = str_replace("10", "", $invoer);
    $invoer = str_replace("11", "", $invoer);
    $invoer = str_replace("12", "", $invoer);
    $invoer = str_replace("1", "", $invoer);
    $invoer = str_replace("2", "", $invoer);
    $invoer = str_replace("3", "", $invoer);
    $invoer = str_replace("4", "", $invoer);
    $invoer = str_replace("5", "", $invoer);
    $invoer = str_replace("6", "Juni", $invoer);
    $invoer = str_replace("7", "July", $invoer);
    $invoer = str_replace("8", "Augustus", $invoer);
    $invoer = str_replace("9", "September", $invoer);
    return $invoer;
    }
    $handle = fopen ("webalizer.hist", "r");
    $data = fread($handle, 1000000);
    $getallen = "$data";
    $getexplode = explode (" ", $getallen);

    $aantalregels = "12";
    for ($i = 0; $i <= $aantalregels; $i++) {
    $aantalexplode = ($i*10);
    $aantalexplode5 = ($i*10) + 5;
    $maand = $getexplode[$aantalexplode];
    echo maand($maand)."<br>";
    echo $getexplode[$aantalexplode5]."<br>";
    }

    ?>
    Het script is nog niet af, ik zoek eerst een oplossing voor de spatie.
    ($i*10) + 5; hier leest hij het 5'de getal dat zijn de aantal bytes
    Laatst gewijzigd door Herbert; 11/09/03 om 21:05.

  4. #4
    Bandwidth stats / eigen cp
    .
    496 Berichten
    Ingeschreven
    25/02/03

    Locatie
    Centraal Gelderland

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: ja
    KvK nummer: 09111714
    Ondernemingsnummer: nvt

    klein scriptje

    Ben maar heel even bezig geweest hiermee, maar dit is wat daaruit kwam

    Code:
    <?php
    
    $lines=file("Path-to-webalizer.hist/webalizer.hist");
    foreach ($lines as $line_num => $line) {
    	$line = trim($line);
    	$waarden=explode(' ',$line);
    	echo "jaar: $waarden[1] maand: $waarden[0] Total: ".number_format($waarden[5]/1024, 0, ',', '.')." MB<br>";
    }
    ?>
    Geeft de hoeveelheid dataverkeer per MB aan via de webalizer.hist file.
    Mocht je hierover nog vragen hebben dan hoor ik dat graag.

  5. #5
    Bandwidth stats / eigen cp
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Re: klein scriptje

    Origineel geplaatst door Pinocchi
    Ben maar heel even bezig geweest hiermee, maar dit is wat daaruit kwam

    Code:
    <?php
    
    $lines=file("Path-to-webalizer.hist/webalizer.hist");
    foreach ($lines as $line_num => $line) {
    	$line = trim($line);
    	$waarden=explode(' ',$line);
    	echo "jaar: $waarden[1] maand: $waarden[0] Total: ".number_format($waarden[5]/1024, 0, ',', '.')." MB<br>";
    }
    ?>
    Geeft de hoeveelheid dataverkeer per MB aan via de webalizer.hist file.
    Mocht je hierover nog vragen hebben dan hoor ik dat graag.
    Pinocchi bedankt het werkt



  6. #6
    Bandwidth stats / eigen cp
    aktieve deelnemer
    76 Berichten
    Ingeschreven
    11/09/03

    Locatie
    Haarlem

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: 34238741
    Ondernemingsnummer: nvt

    kijk dit is exact wat ik zoek, bedankt!

  7. #7
    Bandwidth stats / eigen cp
    .
    496 Berichten
    Ingeschreven
    25/02/03

    Locatie
    Centraal Gelderland

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: ja
    KvK nummer: 09111714
    Ondernemingsnummer: nvt

    graag gedaan jongens

  8. #8
    Bandwidth stats / eigen cp
    Banned
    158 Berichten
    Ingeschreven
    15/07/03

    Locatie
    Aalten

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Alstublieft Mensen,

    <?php

    /* declaraties */
    $domains_base = "/home/domains";
    $history_file = "stats/webalizer.hist";

    $hostname = "localhost";
    $username = "user";
    $dbName = "database";
    $password = "password";

    /* verbinding met de database */
    MYSQL_CONNECT($hostname, $username, $password) OR DIE("Unable to connect to database");
    @mysql_select_db( "$dbName" ) or die( "Unable to select database");

    function find_history_file($site)
    {
    global $domains_base;
    global $history_file;

    $current_dir = basename($site);
    if (($current_dir == ".") OR ($current_dir == ".."))
    {
    return;
    }

    // echo "$domains_base $site $history_file <br>\n";
    $stats_file = "$site" . "/" . "$history_file";

    parse_history_file($current_dir, $stats_file);
    }

    function parse_history_file($site, $stats_file)
    {
    if (is_file($stats_file))
    {
    $row = 1;
    $handle = fopen ("$stats_file","r");

    while ($data = fgetcsv ($handle, 1000, " "))
    {
    // $num = count ($data);
    // print "<p> $num fields in line $row: <br>\n";

    $mbytes = round(($data[5] / 1024), 2);

    $date = "$data[1]" . "-" . "$data[0]" . "-00";
    // echo $date;
    $query = "DELETE FROM stats WHERE site=\"$site\" AND date=\"$date\"";
    $result = MYSQL_QUERY($query);

    $query = "INSERT INTO stats (site, date, kbytes) values(\"$site\", \"$date\", $data[5])";
    $result = MYSQL_QUERY($query) or die ("Kan nieuwe records niet in de database stoppen");

    $row++;
    }
    fclose ($handle);
    }
    }


    function scan_domains()
    {
    global $domains_base;
    global $history_file;

    if ($handle = opendir('/home/domains/'))
    {
    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle)))
    {
    $directory = "$domains_base" . "/" . "$file";
    if (is_dir($directory))
    {
    // echo "$file <br>\n";
    find_history_file($directory);
    }
    }
    closedir($handle);
    }
    }


    function fetch_domains_list()
    {
    $query = "SELECT DISTINCT site FROM stats ORDER BY site";
    $result = @MYSQL_QUERY($query) or die ("Kan de lijst met domeinnamen niet ophalen");
    $number = @MYSQL_NUMROWS($result);

    print "<form name=site action=\"sites_stats.php\" method=GET >";
    print "<select name=site size=1 >";

    if( $number == 0 )
    {
    // nothing to see here, move along
    print "<option value=\"\">Leeg</option>";
    }

    $i = 0;
    while ($i < $number)
    {
    $site = mysql_result($result,$i,"site");

    print "<option value=\"$site\">$site</option>";
    $i++;
    }

    print "</select>";
    print "<input type=submit Value=Go >";
    print "</form>";
    }


    function fetch_date_list()
    {
    $query = "SELECT DISTINCT date FROM stats ORDER BY date DESC";
    $result = @MYSQL_QUERY($query) or die ("Kan de lijst met datums niet ophalen");
    $number = @MYSQL_NUMROWS($result);

    print "<form name=date action=\"sites_stats.php\" method=GET >";
    print "<select name=date size=1 >";

    if( $number == 0 )
    {
    // nothing to see here, move along
    print "<option value=\"\">Leeg</option>";
    }

    $i = 0;
    while ($i < $number)
    {
    $date = mysql_result($result,$i,"date");

    print "<option value=\"$date\">$date</option>";
    $i++;
    }

    print "</select>";
    print "<input type=submit Value=Go >";
    print "</form>";
    }


    function fetch_date_results($date)
    {

    $query = "SELECT SUM(kbytes) FROM stats WHERE date=\"$date\"";
    $result = @MYSQL_QUERY($query) or die ("Kan de lijst met gegevens niet ophalen");
    $number = @MYSQL_NUMROWS($result);
    $totalkb = @MYSQL_FETCH_ROW($result);
    $totalmb = round(($totalkb[0] / 1024), 2);
    $totalgb = round(($totalkb[0] / 1048576), 2);

    print "Totaal verkeer geserveerd door webserver: $totalmb MB / $totalgb GB";

    $query = "SELECT * FROM stats WHERE date=\"$date\" ORDER BY kbytes DESC";
    $result = @MYSQL_QUERY($query) or die ("Kan de lijst met gegevens niet ophalen");
    $number = @MYSQL_NUMROWS($result);

    print "<table border=1 >";
    print "<tr><td>Site</td><td>Date</td><td>Traffic (MB)</td><td>Traffic (GB)</td></tr>";

    if( $number == 0 )
    {
    // nothing to see here, move along
    print "<tr><td>Leeg</td></tr>";
    }

    $i = 0;
    while ($i < $number)
    {
    $site = mysql_result($result,$i,"site");
    $kbytes = mysql_result($result,$i,"kbytes");

    $mbytes = round(($kbytes / 1024), 2);
    $gbytes = round(($kbytes / 1048576), 2);

    print "<tr><td><a href=\"http://$site/\">$site</a> <a href=\"http://$site/stats/\">stats</a>
    <a href=\"sites_stats.php?site=$site\">totals</a></td>
    <td>$date</td><td>$mbytes MB</td><td>$gbytes GB</td></tr>";
    $i++;
    }
    print "</table>";
    }


    function fetch_site_results($site)
    {
    $query = "SELECT SUM(kbytes) FROM stats WHERE site=\"$site\"";
    $result = @MYSQL_QUERY($query) or die ("Kan de lijst met gegevens niet ophalen");
    $number = @MYSQL_NUMROWS($result);
    $totalkb = @MYSQL_FETCH_ROW($result);
    $totalmb = round(($totalkb[0] / 1024), 2);
    $totalgb = round(($totalkb[0] / 1048576), 2);

    print "Totaal verkeer geserveerd door webserver: $totalmb MB / $totalgb GB";

    $query = "SELECT * FROM stats WHERE site=\"$site\" ORDER BY date DESC";
    $result = @MYSQL_QUERY($query) or die ("Kan de lijst met gegevens niet ophalen");
    $number = @MYSQL_NUMROWS($result);

    print "<table border=1 >";
    print "<tr><td>Site</td><td>Date</td><td>Traffic (MB)</td><td>Traffic (GB)</td></tr>";

    if( $number == 0 )
    {
    // nothing to see here, move along
    print "<tr><td>Leeg</td></tr>";
    }

    $i = 0;
    while ($i < $number)
    {
    $site = mysql_result($result,$i,"site");
    $date = mysql_result($result,$i,"date");
    $kbytes = mysql_result($result,$i,"kbytes");

    $mbytes = round(($kbytes / 1024), 2);
    $gbytes = round(($kbytes / 1048576), 2);

    print "<tr><td>$site</td><td>$date</td><td>$mbytes MB</td><td>$gbytes GB</td></tr>";
    $i++;
    }
    print "</table>";
    }


    if ($date == "")
    {
    if ($site == "")
    {
    scan_domains();
    $today = date("Y-m-00");
    header("Location: sites_stats.php?date=$today");
    }
    }

    print "<html>";
    print "<head><title>Traffic overzicht alle websites</title></head>";
    print "<body>";

    fetch_domains_list();
    fetch_date_list();

    if ($date)
    {
    fetch_date_results($date);
    }

    if ($site)
    {
    fetch_site_results($site);
    }

    MYSQL_CLOSE();

    print "</body>";
    print "</html>";

    ?>






    En hier de db:
    CREATE TABLE stats (
    id int(11) NOT NULL auto_increment,
    site varchar(50) NOT NULL default '',
    date date NOT NULL default '0000-00-00',
    kbytes int(32) NOT NULL default '0',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;

  9. #9
    Bandwidth stats / eigen cp
    Software Development
    700 Berichten
    Ingeschreven
    20/04/03

    Locatie
    Haarlem

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    ik ben momenteel bezig met een scriptje die je direct alle uitvoer van de logfile kan parsen naar de DB. zodra deze af is laat ik het weten.
    ( je heb dus geen logfiles meer, maar ik maak dan direct ook een programmatje zodat je ook logfile's kan maken vanuit de DB. )

  10. #10
    Bandwidth stats / eigen cp
    Ouwe rot, 52 Jaar
    1.901 Berichten
    Ingeschreven
    24/08/02

    Locatie
    Gaanderen

    Post Thanks / Like
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    2 Berichten zijn liked


    KvK nummer: 09153441

    Origineel geplaatst door electric
    ik ben momenteel bezig met een scriptje die je direct alle uitvoer van de logfile kan parsen naar de DB. zodra deze af is laat ik het weten.
    ( je heb dus geen logfiles meer, maar ik maak dan direct ook een programmatje zodat je ook logfile's kan maken vanuit de DB. )
    Hoi Richard,
    Ik heb zeer veel belangstelling voor dat script, was al een tijdje op zoek naar zoiets.
    Herbert

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2021 Webhostingtalk.nl.
Web Statistics