Xây dựng module đếm số người đang online bằng PHP & MySQL

Dự án thực tế | Lập Trình PHP | 20/03/2016 | 10542 |


Hiển thị tổng số lượng người truy cập vào website trong một khoảng thời gian nhất định.

 

1. Chức năng:

Hiển thị tổng số lượng người truy cập vào website trong một khoảng thời gian nhất định.

2. Ý tưởng:

Mỗi khi có người truy cập vào website thì chúng ta tiến hành kiểm tra.

  • Nếu là lần đầu truy cập thì chúng ta lưu thông tin truy cập vào cơ sở dữ liệu (CSDL), thông tin gồm một biến đại diện cho người đó (tạm gọi là guest_id) và một biến là thời gian hiện tại người đó truy cập (tạm gọi là time).
  • Nếu là truy cập từ lần 2. Tức người này đang xem các trang khác trang chủ hoặc họ đang reload lại trang chủ, có nghĩa là họ đang trên web của chúng ta. Chúng ta sẽ cập nhật lại thời gian của họ.
  • Nếu thời gian hiện tại lớn hơn thời gian đã lưu trong CSDL thì chúng ta tiến hành xóa các guest_id đó.
  • Sau đó chúng ta tiến hành đếm số lượng các guest_id còn lại trong CSDL đây chính là số người đang online.

Module đếm số người đang truy cập

3. Cách thực hiện:

3.1. Tạo CSDL:

CREATE TABLE IF NOT EXISTS `guest _online` (
  `guest_id` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `time` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

3.2. Tạo file guest_online.php

<?php
session_start(); //khởi tạo session
$guest_id = session_id();
$time = time();
$time_check = $time-600; //Ấn định thời gian là 10 phút
$host = "localhost"; //Tên host, thường là localhost
$username="root"; //Mysql username
$password=""; //Mysql password
$db_name="demo"; //Tên cơ sở dữ liệu
$tbl_name="guest_online"; //Tên bảng (table)

// Kết nối tới sever và chọn database
mysql_connect("$host", "$username", "$password") or die("Cannot connect to server.");
mysql_select_db("$db_name") or die("Cannot select DB");

$sql = "SELECT * FROM $tbl_name WHERE guest_id ='$guest_id ";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
if($count=="0"){ //Truy cập lần đầu
$sql1="INSERT INTO $tbl_name(guest_id, time)VALUES('$guest_id', '$time')";
$result1=mysql_query($sql1);
}else{ //Truy cập từ lần thứ 2
$sql2="UPDATE $tbl_name SET time='$time' WHERE guest_id = '$guest_id'";
$result2=mysql_query($sql2);
}

$sql3 = "SELECT * FROM $tbl_name";
$result3 = mysql_query($sql3);
$count_user_online = mysql_num_rows($result3);
echo "Số người đang online: $count_user_online";

//Nếu quá 10 phút, xóa bỏ session
$sql4 = "DELETE FROM $tbl_name WHERE time < $time_check";
$result4=mysql_query($sql4);

//Đóng kết nối
mysql_close();
?>

Kết luận:

Trên đây là một ứng dụng cơ bản nhằm hỗ trợ các bạn hiểu vấn đề về việc đếm số người đang online. Chú ý chúng ta có thể sửa biến $time_check để thay đổi thời gian đếm. Chúc các bạn thành công!