Besöksstatistik som inte kräver mycket

Permalänk

Besöksstatistik som inte kräver mycket

Jag skulle vilja få tips om ett besöksräknarscript som inte kräver så mycket resurser. Jag har provat en del, men det segar ner så oerhört.

PHP / MySQL är vad som finns på servern.

Permalänk
Medlem

vad ska det vara? bara räkning eller info om webläsare osv.?

Permalänk

Helst så mycket info som möjligt utan bekostnad på hastighet.

Men de grundläggande funktionerna jag söker är antal unika, träffar, webbläsare, land, referens.

Permalänk
Medlem

Ett tips är att använda ett program/göra ett program som baserar sin statistik på webbserverns loggfiler.

Permalänk
Medlem

Jag gjorde detta scriptet för att vara så vänligt som möjligt för databasen, om man ska spara allting för alltid så kan det bli väldigt mycket.

Detta scriptet räknar unika, hits och pageviews. Du kan kolla vilken sida besökaren har kommit från OM den är från samma dygn. Scriptet listar alla IP nummer, när det sen är en ny dag, räknar den ut hur många hits och hur många unika besökare det var för gårdagen, den tar då bort alla raderna med IP nummer och lägger in det i en rad istället, (år, månad, dag, unika, hits). Detta medför att du inte får en enormt stor databas med 1 rad / användare, vilket kan bli ganska mycket om du har en välbesökt sida. Jag hoppas att du kan räkna ut hur databasen ska vara uppbyggd själv.

<?php $page = "index"; $year = date("Y"); $month = date("m"); $day = date("d"); $hour = date("h"); $ip = $_SERVER['REMOTE_ADDR']; if(isset($_SERVER['HTTP_REFERER'])) { $rf = $_SERVER['HTTP_REFERER']; } else { $rf = "none"; } // Gårdagens år, månad och dag $yesterday_year = date('Y', strtotime('-1 day')); $yesterday_month = date('m', strtotime('-1 day')); $yesterday_day = date('d', strtotime('-1 day')); // Unika besökare igår $query = "SELECT * FROM unika WHERE year='$yesterday_year' AND month='$yesterday_month' AND day='$yesterday_day'"; $result = mysql_query($query); $unika_yesterday = mysql_num_rows($result); // Unika besökare idag $query = "SELECT * FROM unika WHERE year='$year' AND month='$month' AND day='$day'"; $result = mysql_query($query); $unika_today = mysql_num_rows($result); // Totalt antal hits $query = "SELECT hits FROM hits WHERE counter='total'"; $res = MySQL_query($query); $total_hits = @mysql_result($res, 0); // Hämtar vad hits stod på när gårdagen började $query = "SELECT hits FROM total_hits WHERE year='$yesterday_year' AND month='$yesterday_month' AND day='$yesterday_day'"; $res = MySQL_query($query); $total_hits_yesterday = @mysql_result($res, 0); // Räknar ut gårdagens hits $hits_yesterday = $total_hits-$total_hits_yesterday; // BÖRJAR RÄKNA if($unika_today == "0") { // Skriver in gårdagens info i databasen $insert = "INSERT INTO stats (year,month,day,unika,hits) VALUES ('$yesterday_year','$yesterday_month','$yesterday_day','$unika_yesterday','$hits_yesterday')"; mysql_query($insert) or die ("1.Could not add data to the table"); if($unika_yesterday != "0") { // Tar bort gårdagens rader $sql = "DELETE FROM unika WHERE year='$yesterday_year' AND month='$yesterday_month' AND day='$yesterday_day'"; mysql_query($sql) or die(mysql_error()); } // Skriver nuvarande hits i total_hits databasen $insert = "INSERT INTO total_hits (year,month,day,hits) VALUES ('$year','$month','$day','$total_hits')"; mysql_query($insert) or die ("2.Could not add data to the table"); // Lägger till en unik besökare i databasen $query = "SELECT * FROM unika WHERE ip='$ip' AND year='$year' AND month='$month' AND day='$day' LIMIT 1"; $r = mysql_query($query) or die(mysql_error()); if(mysql_num_rows($r) == 0) { $insert = "INSERT INTO unika (year,month,day,ip,refferal) VALUES ('$year','$month','$day','$ip','$rf')"; mysql_query($insert) or die ("3.Could not add data to the table"); } // Sidvisningar $query = "UPDATE pageviews SET views=views+1 WHERE counter='$page'"; mysql_query($query) or die ("4.Could not add data to the table"); // RÄKNAR HITS if(isset($_SESSION[visited])) { } else { $_SESSION[visited] = "1"; $query = "UPDATE hits SET hits=hits+1 WHERE counter='$page'"; mysql_query($query) or die ("9.Could not add data to the table"); $query = "UPDATE hits SET hits=hits+1 WHERE counter='total'"; mysql_query($query) or die ("5.Could not add data to the table"); } } else { // Lägger till en unik besökare i databasen $query = "SELECT * FROM unika WHERE ip='$ip' AND year='$year' AND month='$month' AND day='$day' LIMIT 1"; $r = mysql_query($query) or die(mysql_error()); if(mysql_num_rows($r) == 0) { $insert = "INSERT INTO unika (year,month,day,ip,refferal) VALUES ('$year','$month','$day','$ip','$rf')"; mysql_query($insert) or die ("7.Could not add data to the table"); } // Sidvisningar $query = "UPDATE pageviews SET views=views+1 WHERE counter='$page'"; mysql_query($query) or die ("4.Could not add data to the table"); // RÄKNAR HITS if(!$_SISSION[visited] == '0') { echo "en hit"; $_SESSION[visited] = "1"; $query = "UPDATE hits SET hits=hits+1 WHERE counter='$page'"; mysql_query($query) or die ("9.Could not add data to the table"); $query = "UPDATE hits SET hits=hits+1 WHERE counter='total'"; mysql_query($query) or die ("5.Could not add data to the table"); } // RÄKNAR HITS if(isset($_SESSION[visited])) { } else { $_SESSION[visited] = "1"; $query = "UPDATE hits SET hits=hits+1 WHERE counter='$page'"; mysql_query($query) or die ("9.Could not add data to the table"); $query = "UPDATE hits SET hits=hits+1 WHERE counter='total'"; mysql_query($query) or die ("5.Could not add data to the table"); } } ?>

Permalänk
Citat:

Ursprungligen inskrivet av Hoomie
Jag gjorde detta scriptet för att vara så vänligt som möjligt för databasen, om man ska spara allting för alltid så kan det bli väldigt mycket.

Detta scriptet räknar unika, hits och pageviews. Du kan kolla vilken sida besökaren har kommit från OM den är från samma dygn. Scriptet listar alla IP nummer, när det sen är en ny dag, räknar den ut hur många hits och hur många unika besökare det var för gårdagen, den tar då bort alla raderna med IP nummer och lägger in det i en rad istället, (år, månad, dag, unika, hits). Detta medför att du inte får en enormt stor databas med 1 rad / användare, vilket kan bli ganska mycket om du har en välbesökt sida. Jag hoppas att du kan räkna ut hur databasen ska vara uppbyggd själv.

massa kod

Jodå, kan en del php/mysql. Du vill inte dela med dig av koden som skriver ut statistiken också?

Permalänk
Medlem

Själv använder jag bbclone, tycker det fungerar klockrent
http://ibisaeg.mine.nu/bbclone/

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Mathiasss
Jodå, kan en del php/mysql. Du vill inte dela med dig av koden som skriver ut statistiken också?

Jovisst:

// Dagens år,månad och dag $this_year = date("Y"); $this_month = date("m"); $this_day = date("d"); // Gårdagens år, månad och dag $yesterday_year = date('Y', strtotime('-1 day')); $yesterday_month = date('m', strtotime('-1 day')); $yesterday_day = date('d', strtotime('-1 day')); // Förra månaden $mm = $this_month; if($mm == '01') { $mmm1 = '12'; } elseif($mm == '02') { $mmm1 = '01'; } elseif($mm == '03') { $mmm1 = '02'; } elseif($mm == '04') { $mmm1 = '03'; } elseif($mm == '05') { $mmm1 = '04'; } elseif($mm == '06') { $mmm1 = '05'; } elseif($mm == '07') { $mmm1 = '06'; } elseif($mm == '08') { $mmm1 = '07'; } elseif($mm == '09') { $mmm1 = '08'; } elseif($mm == '10') { $mmm1 = '09'; } elseif($mm == '11') { $mmm1 = '10'; } elseif($mm == '12') { $mmm1 = '11'; } echo "<font face='verdana' size='2'>"; // Unika besökare hittils idag $query = "SELECT * FROM unika"; $result = mysql_query($query); $unika_idag = mysql_num_rows($result); // Unika besökare totalt $sql = "SELECT SUM(unika) AS unika_besokare FROM stats"; $res = mysql_query($sql) or die(mysql_error()); $totalt_innan = mysql_result($res, 0, 'unika_besokare'); $totalt = $totalt_innan+$unika_idag; echo "Unika besökare totalt: <b>$totalt</b><br>"; // Totalt antal hits $query = "SELECT hits FROM hits WHERE counter='total'"; $result = MySQL_query($query); $count = mysql_result($result, 0); echo "Totalt antal hits: <b>$count</b><p><p>"; echo "Unika besökare hittills idag: <b>$unika_idag</b><br>"; // Unika besökare igår $sql = "SELECT SUM(unika) AS unika_besokare FROM stats WHERE year='$this_year' AND month='$this_month' AND day='$yesterday_day'"; $res = mysql_query($sql) or die(mysql_error()); $count = mysql_result($res, 0, 'unika_besokare'); echo "Unika besökare igår: <b>$count</b><p>"; // Unika besökare i år $sql = "SELECT SUM(unika) AS unika_besokare FROM stats WHERE year='$this_year'"; $res = mysql_query($sql) or die(mysql_error()); $count = mysql_result($res, 0, 'unika_besokare'); $unika_iar = $count+$unika_idag; echo "Unika besökare hittills $this_year: <b>$unika_iar</b><p>"; // Unika besökare denna månad $sql = "SELECT SUM(unika) AS unika_besokare FROM stats WHERE year='$this_year' AND month='$this_month'"; $res = mysql_query($sql) or die(mysql_error()); $count = mysql_result($res, 0, 'unika_besokare'); $totalt = $count+$unika_idag; echo "Unika besökare denna månad: <b>$totalt</b><br>"; // Unika besökare förra månaden $sql = "SELECT SUM(unika) AS unika_besokare FROM stats WHERE year='$this_year' AND month='$mmm1'"; $res = mysql_query($sql) or die(mysql_error()); $count = mysql_result($res, 0, 'unika_besokare'); echo "Unika besökare förra månaden: <b>$count</b><br>";