2010-11-01 43 views
15

Tôi không chắc chắn điều gì sẽ là cách dễ nhất để thực hiện việc này. Tôi cần có khả năng phát hiện người dùng nào đang trực tuyến trên trang web của mình. Vì vậy, khi mọi người đang xem một chủ đề hoặc nội dung nào đó sẽ hiển thị bên cạnh tên người dùng nếu họ là ONLINE hoặc OFFLINE. Và ở dưới cùng của chỉ mục diễn đàn, nó sẽ nói tất cả những người dùng đang trực tuyến.Phát hiện người dùng trực tuyến?

Cách tiếp cận dễ nhất để làm điều gì đó như thế này? Tôi không chắc chắn nếu tôi sẽ cần một Javascript mà sẽ chạy mỗi khi tải một trang hoặc những gì.

Cảm ơn :)

+3

Không sử dụng Javascript cho việc này. – drudge

+0

Bạn đang sử dụng diễn đàn và phiên bản nào? Nếu một cái gì đó được tạo sẵn như IBP/InvisionFree hoặc PHPBB, vv thì chức năng này thường tồn tại trong bảng điều khiển diễn đàn của bạn. –

+3

Tôi đang tùy chỉnh mã hóa diễn đàn của riêng mình. :) – Cory

Trả lời

20
  • có một cơ sở dữ liệu MySQL với một bảng người dùng
  • có một cột ở chỗ bảng người dùng giúp tiết kiệm là "nhìn thấy lần cuối" -time
  • cập nhật cột trên mọi yêu cầu trang
  • khi kiểm tra trực tuyến hoặc ngoại tuyến, hãy kiểm tra xem thời gian hiện tại có trừ đi "lần xem cuối cùng" không - thời gian lớn hơn một số ngưỡng bạn thích

Chỉnh sửa: Bạn có thể tùy ý tạo một "ping" máy chủ (yêu cầu một trang trống) sau mỗi hai phút hoặc lâu hơn nếu bạn muốn mọi người không hoạt động với Trang web của bạn cũng được hiển thị trực tuyến.

+1

vâng đây có lẽ là cách tiếp cận tốt nhất – Breezer

+0

Chính xác những gì tôi đang nghĩ. Như tôi đã có một thời gian nhìn thấy lần cuối. Và đặt trực tuyến để xem lần cuối trong vòng 5 phút hoặc lâu hơn. Không biết nếu đó là cách tiếp cận tốt nhất mặc dù. – Cory

+0

Bạn nghĩ cột cuối cùng nên cập nhật khi nào? Mỗi trang tải? – Cory

1

Bạn cần giữ một số loại bảng "phiên", nơi bạn giữ người dùng và thời gian khi họ truy cập trang.

Nếu thời gian cũ hơn 5 phút người dùng đang ngoại tuyến (và có thể xóa hàng). Những người dùng khác trong bảng phiên là "trực tuyến".

2

Một cách tiếp cận là lưu trữ phiên người dùng của bạn trong cơ sở dữ liệu hoặc một cửa hàng khác như ghi nhớ (hoặc lý tưởng là cả hai What is the best way to handle sessions for a PHP site on multiple hosts?). Sau đó, bạn chỉ cần tra cứu người dùng trong cửa hàng của mình và xem liệu phiên của họ có còn hoạt động hay không.

Giải pháp như sau: http://pureform.wordpress.com/2009/04/08/memcache-mysql-php-session-handler/

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