Skip to content
Follow us on Twitter or subscribe to this
website by email or with the RSS feed

Bagaimana Cara Memantau Pengunjung Online

Anda tentu pernah melihat pada aplikasi forum diskusi seringkali ada tampilan yang menunjukkan berapa jumlah pengunjung yang sedang online. Bagaimanakah cara membuat tampilan semacam itu dengan PHP?

Ada beberapa metode yang bisa kita pakai untuk menghitung berapa jumlah user atau pengunjung yang sedang aktif di sebuah website, yaitu antara lain berdasarkan informasi session, alamat IP pengunjung dan user agent yang dipakai untuk mengakses website.

Pada artikel ini saya akan membahas salah satu metode yaitu dengan memanfaatkan session yang dibuat oleh PHP. Metode yang saya bahas ini sangat sederhana dan bisa dikatakan paling banyak dipakai oleh para programmer untuk mendeteksi berapa jumlah pengunjung yang aktif.

Pertama, kita buat terlebih dahulu tabel user_online untuk menyimpan informasi session. Kenapa harus memakai database? Sebenarnya tanpa database pun kita bisa menghitung berapa user yang aktif, namun kelemahannya kita tidak bisa mengetahui data statistik yang lebih detail
mengenai pengunjung.

Misalnya kita buat table user_online seperti berikut ini:

CREATE TABLE user_online (
   session_id char(100) NOT NULL default '',
   timestamp int(11) NOT NULL default 0
);

Prinsip yand kita gunakan untuk menghitung user aktif yaitu dengan membaca session_id yang dibuat oleh PHP. Dengan mendeklarasikan fungsi session_start() di awal halaman web, secara otomatis PHP akan membuat session setiap ada pengunjung baru. Dengan session_id ini kita bisa tahu berapa pengunjung yang sedang online.

Kita bisa membaca informasi session_id yang dibuat oleh PHP dengan cara seperti berikut ini:

$session_id = session_id();

Ada dua kemungkinan hasil yang kita peroleh dengan pemanggilan fungsi session_id() di atas, yaitu string session_id dari pengunjung yang aktif atau string kosong (“”) jika tidak ada session. Informasi session yang kita peroleh tersebut selanjutnya kita masukkan ke tabel user_online untuk pemrosesan lebih lanjut.

Untuk mengecek pengunjung masih aktif atau sudah pergi ke situs lain, kita asumsikan bahwa dalam jangka waktu tertentu jika tidak ada request ke server berarti pengunjung sudah pergi. caranya yaitu dengan menghapus session dari database jika sudah melebihi waktu tertentu.

Kemudian agar penggunaannya lebih mudah, prosedur untuk menghitung pengunjung yang aktif tersebut kita jadikan fungsi dan disimpan dalam file tersendiri. Dengan demikian saat diperlukan, kita tinggal memanggil fungsi tersebut setelah terlebih dulu meng-include-nya dalam halaman web.

Berikut ini source code selengkapnya.

<?php
/* Nama file: user_online.php
-------------------------- */
function get_user_online()
{
   $session_id = session_id();
   $timestamp = time();
   $timeout = 600; // 10 menit waktu timeout-nya
   mysql_connect('localhost', 'root', '') or die('Koneksi database gagal');
   mysql_select_db('latihan');
   $query = "SELECT * FROM user_online
             WHERE session_id='" . $session_id . "'";
   $result = mysql_query($query);
   $count = mysql_num_rows($result);
   if ($count < 1)
   {
      $query = "INSERT INTO user_online
                VALUES ('" .$session_id. "', '".$timestamp."')";
   }
   else
   {
      $query = "UPDATE user_online
                SET timestamp='" . $timestamp . "'
                WHERE session_id='" . $session_id . "'";
   }
   $result = mysql_query($query);
   // hitung jumlah pengunjung yang aktif
   $query = "SELECT count(*) total FROM user_online";
   $record = mysql_fetch_array(mysql_query($query));
   $user_online = $record['total'];
   // hapus session yang sudah kadaluwarsa
   $query = "DELETE FROM user_online
             WHERE timestamp < " . ($timestamp - $timeout);
   mysql_query($query);
   mysql_close();
   return $user_online;
}
?>

Kemudian contoh penggunaannya adalah sebagai berikut:

<?php
/* Nama file: index.php
--------------------------------------------------- */
session_start();
include ('user_online.php');
$user_online = get_user_online();
?>
<html>
   <head><title>Menghitung User Online</title></head>
<body>
Selamat datang, saat ini ada <?php echo $user_online ?> pengunjung yang online.
</body>
</html>

Pada program di atas, kita tidak mengecek user agent dari pengunjung. Jadi apabila ada satu pengunjung yang mengakses web dengan 2 browser yang berbeda secara bersamaan, misalnya Internet Explorer dan Mozilla Firefox maka session yang dibuat oleh PHP juga ada dua.

Barangkali ada yang mempunyai ide lain? Mari kita diskusikan sama-sama di sini.

Source Code

  Aplikasi User Online (1,019 bytes)

Post to Twitter Tweet This Post to Delicious Delicious Post to Digg Digg This Post to Facebook Facebook Post to MySpace MySpace Post to StumbleUpon Stumble This

Artikel Terkait:

POST BANNER

Bagaimana Komentar Anda?

Monggo kalau Anda mau mengomentari tulisan di atas! Bertanya atau mengkritik juga boleh, tapi jangan terlalu menyakitkan :).

  • didi aditya s | January 27th, 2010 jam 8:38 am

    mas-mas numpang tnya nih…….
    ku mw nnya :
    1. cara utk merubah status dr user ke root ?
    2. cara membuat atau menambah user ?
    3. menampilkan tanggal di linux ?
    4. mengetahui user yg sedang aktif ?
    5. mengetahui versi kernel yg dipakai ?
    tlong di balas ya mas soal’y ku btuh bgtz nih…..

    Silakan dicari di http://linux.or.id

  • amalia panca | July 7th, 2010 jam 5:16 pm

    wew..bgus jg gan ulasan artikel nya
    kbetulan ane jg baru pny BLOG jd mau tahu lbh bnyk lg tentang BLOGING ni…
    share ja klo da yang baru2 ya gan..
    coz ane msh NEWBIE gan..kgk tau apa2…
    dateng ye k BLOG ane

Tinggalkan Pesan