2009-11-20 29 views
7

Tôi hiện đang có ứng dụng Giá treo đang chạy với thiết lập hệ thống người dùng cơ bản. Tôi muốn thử và tạo một tiện ích hiển thị những người dùng hiện đang đăng nhập vào trang web. Tôi không chắc làm thế nào tôi nên xử lý này mặc dù; Tôi không chắc liệu các phiên treo đang hoạt động dựa trên việc người dùng có thực sự đang ở trên trang ứng dụng web hay không, vì vậy tôi đang tìm kiếm một số ý tưởng về cách tôi có thể làm việc với những gì tôi đã có để thực hiện việc này.Ai đang trực tuyến trong giá treo

Trả lời

11

Có một số cách bạn có thể thực hiện, tùy thuộc vào mức độ chính xác mà bạn muốn.

Cách dễ nhất và đầu tiên để thực hiện việc này, sử dụng cửa hàng ghi nhớ hoặc lưu giữ liên tục để theo dõi người dùng và lần cuối cùng họ truy cập một trang. Hãy xem xét bất kỳ ai đã truy cập một trang trong vòng X phút để 'đăng nhập', miễn là họ không 'đăng xuất'. Nếu bạn chỉ cập nhật db mỗi trang, hoặc cập nhật memcached (hoặc db nhanh hơn), sau đó truy vấn nó cho các phiên trong phút cuối cùng.

Thứ hai, nhưng chuyên sâu hơn trên máy chủ của bạn, đặt Javascript trên mọi trang, truy cập URL đặc biệt trên trang web của bạn sau mỗi XX giây/phút để cho biết người dùng đã đăng nhập. Điều này có lợi thế là JS của bạn có thể giữ cho bộ đếm trên trang được cập nhật trong thời gian thực. Mặc dù việc bỏ phiếu có thể tốn kém trên máy chủ của bạn.

Hoặc thứ ba, sử dụng hệ thống kiểu Comet, nói với Orbited, và miễn là người dùng trên trang được kết nối với máy chủ, kết nối sẽ mở và bạn có thể theo dõi số lượng phiên bạn đang mở. Orbit có thể xử lý khoảng 10k kết nối mở tại một thời điểm trên mỗi máy chủ mà tôi tin.

Tôi khuyên bạn nên sử dụng loại đầu tiên vì nó yêu cầu chi phí/thiết lập bổ sung ít nhất và xử lý trường hợp khá phổ biến. Nếu bạn đang sử dụng trò chuyện trong thời gian thực, nơi bạn cần chính xác hơn, hãy cân nhắc một trong hai cách khác.

+0

Điều gì về việc đọc chính cửa hàng của Beaker? – Joril

Các vấn đề liên quan