Đếm số người online và số lượt truy cập ASP.NET

Bài viết này mình xin hướng dẫn các bạn cách để tạo một bộ đếm số người online và số lượt truy cập. Đây là một module rất hay thấy trên các web. Các bạn có thể sử dụng một vài plugin được hỗ trợ sẵn nhưng mình nghĩ các bạn nên tự tạo cho mình một module của riêng mình thì sẽ tốt hơn(trong việc tùy chỉnh giao diện). Để tạo module này mình sẽ sử file Global.asax
Các bạn sẽ viết đoạn code sau trong sự kiện Session_Start

int count_visit = 0;
        //Kiểm tra file count_visit.txt nếu không tồn  tại thì
        if (System.IO.File.Exists(Server.MapPath("~/count_visit.txt")) == false)
        {
            count_visit = 1;
        }
        // Ngược lại thì
        else
        {
            // Đọc dử liều từ file count_visit.txt
            System.IO.StreamReader read = new System.IO.StreamReader(Server.MapPath("~/count_visit.txt"));
            count_visit = int.Parse(read.ReadLine());
            read.Close();
            // Tăng biến count_visit thêm 1
            count_visit++;
        }
        // khóa website
        Application.Lock();
        // gán biến Application count_visit
        Application["count_visit"] = count_visit;
        // Mở khóa website
        Application.UnLock();
        // Lưu dử liệu vào file  count_visit.txt
        System.IO.StreamWriter writer = new System.IO.StreamWriter(Server.MapPath("~/count_visit.txt"));
        writer.WriteLine(count_visit);
        writer.Close();
        if (Session["online"] == null)
        {
            Session["online"] = 1;
        }
        else
        {
            Session["online"] = int.Parse(Session["online"].ToString()) + 1;
        }

Khi đọc đoạn code trên các bạn có thể thấy quy trình tạo module của mình như sau:
Mình sử dụng 1 file count_visit.txt để lưu trữ số lượt truy cập count_visit. Điều này sẽ tốt hơn là bạn sử dụng 1 biến Application để lưu trữ số lượt truy cập vì nếu bạn chuyển server hoặc server của bạn khởi động lại hoặc bảo trì thì biến đó sẽ bị reset lại. Tiếp theo mình sẽ kiểm tra xem file đó có tồn tại hay không. Nếu không thì có nghĩa là ứng dụng mới chạy lần đầu vào bắt đầu tạo file và ghi. Nếu có thì mình sẽ đọc số lượt visit đã được ghi vào trong đó và sau đó cộng thêm 1 vào và ghi ngược trở lại file.
Còn biến session thì sẽ check xem nó đã được tạo hay chưa và nếu nó(có người đang online) có rồi thì cộng thêm 1 vào nó( cộng thêm một người vừa online vào số người đang online). Và trong sự kiện Session_End mình sẽ trừ bớt đi.

Session["online"] = int.Parse(Session["online"].ToString()) - 1
Trong module bạn sẽ gọi 2 biến này ra:
<table>
    <tr>
        <td><label>Tổng số lượt truy cập</label></td>
        <td><%=Application["count_visit"].ToString() %></td>
        </tr>
        <tr>
            <td><label>Số người đang online:</label></td>
            <td><%=Session["online"].ToString() %></td>
        </tr>
        <tr>
    </table>
 
Chúc các bạn thành công!

1 nhận xét:

Hồ Xuyên nói...

Chương trình bị lỗi do không hiểu biến Application . Vậy biến Application được khai báo như thế nào và khai báo ở đâu ?