09/10/2018, 23:17

Mời mọi người thảo luận về Giới hạn truy cập trong website

Vấn đề như thế này nhé:
Một site do băng thông có hạn, hoặc một số lý do nào đó mà tại một thời điểm chỉ có thể phục vụ 1000 người. Nếu người thứ 1001 vào thì nó chuyển đến trang đợi (nào đó) và hiện thông báo.

Mình làm thế này: Tạo một bảng tạm theo kiểu như thống kê số người truy cập bằng session. Khi một người nào đó vào site ta sẽ khởi tạo session và lưu và bảng này, thực hiện thao tác xóa các session cũ(có thể thiết lập là 5phút ...v..). Đồng thời đếm xem tổng số session (count *) là bao nhiêu. Nếu lớn hơn 1000 thì thực hiện thao tác trên.

Tuy nhiên, cách này có BUG:
- Khi người truy cập tắt trình duyệt và vào lại trong thời gian nhỏ hơn thời gian quy định (5p) thì script sẽ không chuẩn.
- Quá nhiều thao tác ghi và đọc trên database.

Ai có giải pháp nào không? Hoặc có thể bổ xung cách mình đưa ra?
MichaelTuanAnh viết 01:27 ngày 10/10/2018
session có timeout mà, bạn có thể dùng nó để giải quyết.
anhtuannd viết 01:28 ngày 10/10/2018
Em toàn dựa vào cái server load để tính. Nếu server load lên cao đến một ngưỡng nào đó thì mình đưa khách đến một trang tạm.
TheHeTre viết 01:28 ngày 10/10/2018
Quote Được gửi bởi anhtuannd View Post
Em toàn dựa vào cái server load để tính. Nếu server load lên cao đến một ngưỡng nào đó thì mình đưa khách đến một trang tạm.
Mình chưa hiểu rõ về cái này, bạn có thể chỉ thêm được không?
anhtuannd viết 01:26 ngày 10/10/2018
Quote Được gửi bởi TheHeTre View Post
Mình chưa hiểu rõ về cái này, bạn có thể chỉ thêm được không?
Sorry, em hiểu nhầm ý của bác. Cái của em làm là tính khi nào server phải xử lý nhiều chứ không liên quan đến băng thông. Khi nào thấy server "lờ đờ" thì các khách viếng thăm sẽ được đưa đến trang tạm.
TheHeTre viết 01:27 ngày 10/10/2018
Nếu thế, chỉ có một giá trị làm sao để phân biệt người mới vào với người nhấn vào trang thứ 2, thứ 3?
anhtuannd viết 01:24 ngày 10/10/2018
Cái server load thì không cần dùng đến database, mà lấy thông tin từ server.
Còn nếu dùng database, theo em nghĩ thì nên dùng thêm cookie để nhận diện khi người dùng mở nhiều trang.
Cách bác lkn nói không khả thi đâu, vì làm sao bác xác định được một client bị quá time out?
Bài liên quan
0