Menampilkan ringkasan statistik situs untuk publik

Halaman statistik lengkap situs diproteksi dengan kata sandi, namun ada kalanya Anda ingin menampilkan beberapa informasi tertentu seperti total pengunjung (unique visitors) bulan ini atau total kunjungan (visits) bulan ini bagi publik.

Untuk melakukan hal ini, Anda bisa mengambil informasinya dari file mentah statistik Awstats yang berada di direktori sites/NAMASITE/awstats-www/*.txt. Berikut ini skrip contohnya dalam PHP. Silakan dimodifikasi sendiri sesuai kebutuhan. Silakan lihat juga file .txt di subdirektori awstats-www/ tersebut untuk melihat seperti apa format file mentah statistik Awstats.

<?php

$cur_year = date("Y");
$cur_mon = date("m");

$hits = 0;
$pv = 0;
$bw = 0;
$visits = 0;
$visitors = 0;

$in_section = false;
if ($fp = fopen("/s/$_SERVER[SERVER_NAME]/awstats-www/awstats$cur_mon$cur_year.txt", "r")) {
  while ($line = fgets($fp)) {
    if (preg_match('/^TotalVisits (\d+)/', $line, $m)) $visits = $m[1];
    if (preg_match('/^TotalUnique (\d+)/', $line, $m)) $visitors = $m[1];
    if (preg_match('/^BEGIN_DAY /', $line)) $in_section = true;
    if (preg_match('/^END_DAY/', $line))    $in_section = false;
    if ($in_section) {
      if (preg_match('/^\d{8} (\d+) (\d+) (\d+)/', $line, $m)) {
        $pv += $m[1]; $hits += $m[2]; $bw += $m[3]; 
      }
    }
  }
}

# silakan komen yang tidak ingin ditampilkan
echo "Total hit bulan ini: $hits<", "br>\n";
echo "Total halaman bulan ini: $pv<", "br>\n";
echo "Total bandwidth bulan ini: ", sprintf("%.1fGB", $bw/1024/1024/1024), "<", "br>\n";
echo "Total kunjungan bulan ini: $visits<", "br>\n";
echo "Total pengunjung bulan ini: $visitors<", "br>\n";

?>

Contoh hasil:

Total hit bulan ini: 3131
Total halaman bulan ini: 1886
Total bandwidth bulan ini: 0.1GB
Total kunjungan bulan ini: 1215
Total pengunjung bulan ini: 247

Contoh lain, menampilkan jumlah hit/kunjungan kemarin (dapat dimodifikasi untuk hit/kunjungan hari ini, kemarin lusa, dsb).

<?php

$time = time()-86400; # kemarin
$year = date("Y", $time);
$mon  = date("m", $time);
$day  = date("d", $time);

$pv = 0;
$hits = 0;
$bw = 0;
$visits = 0;

$in_section = false;
if ($fp = fopen("/s/$_SERVER[SERVER_NAME]/awstats-www/awstats$mon$year.txt", "r")) {
  while ($line = fgets($fp)) {
    if (preg_match('/^BEGIN_DAY /', $line)) $in_section = true;
    if (preg_match('/^END_DAY/', $line))    $in_section = false;
    if ($in_section) {
      if (preg_match('/^(\d{4})(\d{2})(\d{2}) (\d+) (\d+) (\d+) (\d+)/', $line, $m)) {
        if ($day == $m[3]) {
          $pv += $m[4]; $hits += $m[5]; $bw += $m[6]; $visits += $m[7];
        }
      }
    }
  }
}

# silakan komen yang tidak ingin ditampilkan
echo "Total hit kemarin: $hits<", "br>\n";
echo "Total halaman kemarin: $pv<", "br>\n";
echo "Total bandwidth kemarin: ", sprintf("%.1fMB", $bw/1024/1024), "<", "br>\n";
echo "Total kunjungan kemarin: $visits<", "br>\n";

?>

Resita has written 702 articles