Avatar billede webudvikleren Nybegynder
15. marts 2007 - 18:49 Der er 12 kommentarer og
1 løsning

Måle hvor meget trafik man bruger på sin hjemmesider

Hej, hvordan måler man hvor meget traffik der bliver sendt fra sin side af? Har læst om en dedikeret server som kan tilbyde 100 gb trafik, men hvordan kan jeg finde ud af om mine sider ikke overskrider de 100 gb?

På forhånd tak
Avatar billede sjh Nybegynder
15. marts 2007 - 19:15 #1
Ja.. altså hvis det er din html fra en php-side så kan du gøre det med ob_start() og så gemme det i din mysql for at kunne regne på det..

<?php
  function callBack_data($strHtml) {
    $nSize = strlen($strHtml);
    /* opsamle det i fx. MySQL */
    mysql_query("INSERT INTO table1 (size) VALUES ($nSize);");
    return $strHtml;
  }
  if (version_compare(phpversion(), "4.0.0", ">=")) {
    ob_start("callBack_data");
  }
?>

men den tager jo så ikke billeder, html-filer osv..
Avatar billede sjh Nybegynder
15. marts 2007 - 19:20 #2
Hvis du så har adgang til .htaccess så kan du smide det her i..

SetHandler application/x-httpd-php
php_value auto_prepend_file "/Apache/htdocs/global_include.php"

Så smider du script fra
Kommentar: sjh
15/03-2007 19:15:18
i global_include.php

så tager den det hele med. (Det kræver dog lidt af din server)
Avatar billede sjh Nybegynder
15. marts 2007 - 19:35 #3
Ja.. du kan måske også bruge :

AddModule mod_status.c
AddModule mod_info.c
Avatar billede sjh Nybegynder
15. marts 2007 - 19:37 #4
ved status kan du få disse infomationer:

Current Time: Thursday, 15-Mar-2007 19:35:49 Rom, normaltid
Restart Time: Thursday, 15-Mar-2007 13:20:32 Rom, normaltid
Parent Server Generation: 1
Server uptime: 6 hours 15 minutes 17 seconds
Total accesses: 167 - Total Traffic: 96 kB
.00742 requests/sec - 4 B/second - 588 B/request
1 requests currently being processed, 49 idle servers
Avatar billede webudvikleren Nybegynder
15. marts 2007 - 19:37 #5
function callBack_data($strHtml) {

Hvor får du $strHtml fra? Og det vil sige trafik måles ved at tælle antal cifre i en HTMl kode? o_O
Avatar billede webudvikleren Nybegynder
15. marts 2007 - 19:38 #6
"ved status kan du få disse infomationer:

Current Time: Thursday, 15-Mar-2007 19:35:49 Rom, normaltid
Restart Time: Thursday, 15-Mar-2007 13:20:32 Rom, normaltid
Parent Server Generation: 1
Server uptime: 6 hours 15 minutes 17 seconds
Total accesses: 167 - Total Traffic: 96 kB
.00742 requests/sec - 4 B/second - 588 B/request
1 requests currently being processed, 49 idle servers"

Hvis jeg aktiverer de moduler, hvor kan jeg så se de statistiker?
Avatar billede sjh Nybegynder
15. marts 2007 - 19:46 #7
AddModule mod_status.c

.htaccess
  <FilesMatch "status$">
    SetHandler server-status
  </FilesMatch>
.htaccess

opret en fil med navn "status" så tilgår du den med http://domæne.dk/status


Hvor får du $strHtml fra?

det er her -> ob_start("callBack_data"); som udfør funktion og smider det igennem
læs om den her : http://dk.php.net/ob_start
Avatar billede sjh Nybegynder
15. marts 2007 - 19:48 #8
der skal ikke stå noget i filen : "status" den skal bare være der for at du ikke får en fejl.. (404)
Avatar billede webudvikleren Nybegynder
15. marts 2007 - 19:51 #9
Sådan. Nu virker det. Men den udskriver ikke noget med trafikken. Den udskriver;

"Current Time: Thursday, 15-Mar-2007 19:51:27 Rom, normaltid
Restart Time: Thursday, 15-Mar-2007 03:07:40 Rom, normaltid
Parent Server Generation: 0
Server uptime: 16 hours 43 minutes 47 seconds
4 requests currently being processed, 246 idle workers
"

Også en P-et eller andet key..
Avatar billede sjh Nybegynder
15. marts 2007 - 19:56 #10
ja jeg må indrømme at jeg ikke ved helt hvordan mod_status.c virker.. men som jeg skriver "..måske også bruge.."
Avatar billede sjh Nybegynder
15. marts 2007 - 20:27 #11
Ha ha.. det var nok nemest bare at tilføje en extra log-fil som kun udskriver størrelsen

  LogFormat "%b" vsize
  CustomLog logs/size.log vsize


<VirtualHost *:80>
  DocumentRoot /Apache/htdocs/domæne.dk
  ServerName domæne.dk
  ServerAlias www.domæne.dk
  CustomLog logs/domæne.log common

  LogFormat "%b" vsize
  CustomLog logs/size.log vsize
</VirtualHost>


Så kan du tælle dem sammen når du vil...
Avatar billede sjh Nybegynder
15. marts 2007 - 20:44 #12
Så kan du tælle dem sammen så:

<?php
  $lines = file("/Apache/logs/size.log");
  $total = 0;

  foreach ($lines as $line) {
    $total += intval($line);
  }

  echo BytesToString($total);

  function BytesToString($intBytes, $intDecimals = 1) {
    $arrFormats = array("1152921504606846976" => "EB", "1125899906842624" => "PB",
    "1099511627776" => "TB", "1073741824" => "GB", "1048576" => "MB", "1024" => "kB");
    if($intBytes <= 1024)
      return (string)$intBytes." byte";
    foreach($arrFormats as $intValue => $strName)
      if(floor($intBytes / $intValue) != 0)
      return (string)number_format($intBytes / $intValue, $intDecimals, ".", "'")." ".$strName;
  }
?>
Avatar billede sjh Nybegynder
15. marts 2007 - 20:47 #13
så skal du bare huske på den dato, når du starter din test ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester