10/10/2018, 13:19

Cách tính số người đang xem, đã xem từng chuyên mục

chào các bác
Như title đã nói, mình đang muốn đếm số người đang xem từng chuyên mục. nhưng chưa hiểu cách thức nó làm việc như thế nào.
Mình định tạo ra 1 table(table_view_box) lưu ip của khách truy cập vào và tham chiếu đến chuyên mục. khi hiển thị thì đếm số ip trong cùng chuyên mục ra.
Các bác phân tích xem, e suy luận vậy có đúng không, hay là có cách nào khác hay hơn thế.
-----
Câu hỏi phụ.
Mình đã tính số người đã xem bài viết rồi, nhưng khi người ta f5 thì nó lại tăng lên 1, có cách nào khắc phục đc không ak.
Giải thuật của mình thì thế này, khi người ta vào xem 1 bài nào đó, thì select cột view trong data ra rồi cộng thêm 1.
Tính như thế này thì thấy ảo quá....không chính xác.
Các bác giúp em với nhe. Chúc các bác 1 tuần làm việc thành công.
trannamcn viết 15:35 ngày 10/10/2018
categoryID
IP
timeOnline
Thêm 1 fields là timeOnline nữa bạn nhé !! Nếu người ta không xem trong vòng 5 phút thì delete hết những row đó đi ! ( Cái IP để xác định đó là ai để cập nhật lại timeOnline cho IP đó )


Nói chung nếu để chuẩn xác hơn thì bạn phải lưu trữ nhiều dữ liệu hơn >> Nặng hơn >> Chấp nhận điều này thì mọi thứ sẽ oke
tuine2334 viết 15:31 ngày 10/10/2018
Được gửi bởi trannamcn
categoryID
IP
timeOnline
Thêm 1 fields là timeOnline nữa bạn nhé !! Nếu người ta không xem trong vòng 5 phút thì delete hết những row đó đi ! ( Cái IP để xác định đó là ai để cập nhật lại timeOnline cho IP đó )


Nói chung nếu để chuẩn xác hơn thì bạn phải lưu trữ nhiều dữ liệu hơn >> Nặng hơn >> Chấp nhận điều này thì mọi thứ sẽ oke
-- Mình đã hiểu được đôi chút vấn đề bạn muốn nói. Cái này thì dùng để tính số người đang xem.

Còn cái tính số người đã xem rồi nó cữ tăng mãi lên 1 khi F5 thì làm sao khắc phục vậy bạn.
trannamcn viết 15:35 ngày 10/10/2018
Bạn tạo ra 1 table bất kỳ:
postID
postIP

query theo trường post ID và post IP nếu chưa có thì + view lên 1, đồng thời add IP vào tương ứng với Post ID
nếu có rồi thì thôi không cộng nữa là oke !
tuine2334 viết 15:22 ngày 10/10/2018
Hi, cám ơn nhiều nhe.
Cái này làm vậy phải tốn tất cả là 2table và chứa dữ liệu cả đống luôn. Vậy có cách nào tối giản hơn nữa mà cùng chức năng như thế không bác.
chet7h45 viết 15:22 ngày 10/10/2018
Được gửi bởi tuine2334
Hi, cám ơn nhiều nhe.
Cái này làm vậy phải tốn tất cả là 2table và chứa dữ liệu cả đống luôn. Vậy có cách nào tối giản hơn nữa mà cùng chức năng như thế không bác.
Có 1 cách đơn giản hơn mà ko cần phải lọc lấy ra ip.

Đó là bạn dùng chính session id để phân biệt các user với nhau. Khi có 1 session start, bạn lưu vào csdl thời gian bắt đầu session và session id.
Cho 1 đoạn javascript tự động post lên server cứ mỗi 1 thời gian nhất định, 5ph chẳng hạn, để tăng cho session id này thêm 5ph nữa.
Và xóa tất cả session id cách thời điểm hiện tại hơn 5ph.
Đồng thời lấy ra số session id còn hiệu lực.
tuine2334 viết 15:34 ngày 10/10/2018
Được gửi bởi chet7h45
Có 1 cách đơn giản hơn mà ko cần phải lọc lấy ra ip.

Đó là bạn dùng chính session id để phân biệt các user với nhau. Khi có 1 session start, bạn lưu vào csdl thời gian bắt đầu session và session id.
Cho 1 đoạn javascript tự động post lên server cứ mỗi 1 thời gian nhất định, 5ph chẳng hạn, để tăng cho session id này thêm 5ph nữa.
Và xóa tất cả session id cách thời điểm hiện tại hơn 5ph.
Đồng thời lấy ra số session id còn hiệu lực.
Cách này của bác thấy hay hơn, 2 chức năng chỉ tốn 2 session, 1 table. nhưng bù lại server phải xử lý liên tục, vì cứ 5p mình phải gọi server update csdl. Thay vì 5p gọi update, vậy mình có thể làm nếu người dùng load lại trang thì kiểm tra biến session cộng thêm 5p đc không bác.
Cám ơn 2 bác nhiều nhe.
chet7h45 viết 15:29 ngày 10/10/2018
Được gửi bởi tuine2334
Cách này của bác thấy hay hơn, 2 chức năng chỉ tốn 2 session, 1 table. nhưng bù lại server phải xử lý liên tục, vì cứ 5p mình phải gọi server update csdl. Thay vì 5p gọi update, vậy mình có thể làm nếu người dùng load lại trang thì kiểm tra biến session cộng thêm 5p đc không bác.
Cám ơn 2 bác nhiều nhe.
Tất nhiên là được, sử dụng như thế nào là tùy ở bạn thôi.
Bài liên quan
0