2011-09-13 44 views
5

im thực hiện một số mã thống kê cho trang web của tôi (im a php developper). Tôi muốn tính toán bao nhiêu giây/phút người dùng web ở lại trên bất kỳ trang nào (như google analytics làm) nhưng tôi không có ý tưởng về cách thực hiện điều này. Cảm ơn bạn vì bất kỳ trợ giúp hoặc tập lệnh nào!Cách tính thời gian người dùng trên trang web?

Trả lời

2

Bạn thu thập dữ liệu như thế nào? Các tùy chọn phổ biến sẽ được thiết kế trang bằng javascript, xem tệp nhật ký máy chủ web, trong trình xử lý yêu cầu phía máy chủ hoặc đánh hơi lưu lượng truy cập TCP/IP.

Làm như "như Google Analytics" ngụ ý trước đây. Trong trường hợp đó, cách để thực hiện việc này là lấy dấu thời gian càng sớm càng tốt khi trang tải (thay vì chờ sự kiện sẵn sàng/tải trang) và so sánh giá trị đó với thời điểm trước đó (vì vậy bạn có thể lưu trữ thời gian đó một cookie). Sau đó, bạn cần một số cách để gửi lại serverside này, và một cách ghi âm và báo cáo về dữ liệu.

Lưu ý rằng cố gắng kích hoạt cuộc gọi ajax khi người dùng rời khỏi trang, ví dụ: qua onunload, sẽ không hoạt động đáng tin cậy (trang khởi chạy yêu cầu ở cuối vòng đời của nó). Điều quan trọng ở đây là phần ASYNCHRONOUS. Và thực hiện cuộc gọi đồng bộ sẽ chỉ có tác dụng làm chậm trang web.

Bạn có thể muốn xem Yahoo Boomerang - mặc dù nó không hỗ trợ đo thời gian dừng ngoài hộp, thật dễ dàng để mở rộng. Đối với chương trình phụ trợ, bạn có thể làm tồi tệ hơn nhiều hơn Graphite

-1

Khi tải trang tạo đối tượng ngày, sau đó khi tải trang tạo ra một đối tượng khác và loại trừ chúng. Sau đó, bạn có thể thực hiện yêu cầu AJAX cho máy chủ theo dõi của mình, gửi thời gian đã trôi qua.

var startTime = new Date(); 
var endTime; 

window.onunload = function() 
{ 
endTime = new Date(); 
var elapsedSeconds = endTime.getTime() - startTime.getTime(); 
//Do the ajax request, sending elapsedSeconds 
} 
+4

Thường thì tốt hơn là thực hiện các phép tính ở phía máy chủ để người dùng không thể giả mạo chúng. –

+0

Đúng, nhưng bạn phải tự hỏi chính xác bạn muốn theo dõi những gì. Khoảng thời gian giữa window.load và window.unload hoặc thời gian giữa khi máy chủ nhận được phản hồi đầu tiên và lần thứ hai. Có thể có sự khác biệt đáng chú ý. – TJHeuvel

+1

Đảm bảo yêu cầu Ajax hoàn tất đáng tin cậy mà không ảnh hưởng đến quá trình chuyển đổi trang sẽ rất khó khăn. – symcbean

1

Bạn có thể kích hoạt sự kiện tải xuống trong javascript khi người dùng rời khỏi trang, gửi yêu cầu Ajax đến máy chủ của bạn. Vì điều này có thể không hoạt động trong tất cả các trình duyệt, đặc biệt nếu độ trễ mạng cao, cũng có một tập lệnh ping (cũng với Ajax) gọi hệ thống thống kê của bạn một lần miễn là người dùng ở lại trên trang (ví dụ: mọi 10-60 giây tùy thuộc vào độ phân giải bạn muốn).

0

Nếu bạn muốn làm điều đó trong serverside tức là trong php thì có lẽ bạn sẽ cần một bảng phân bổ cho việc này. nói "analytic"

Trước tiên, bạn cần thêm tập lệnh này vào mọi trang. chèn dữ liệu vào bảng phân tích là $ _SERVER ['http_referer'], dấu thời gian hiện tại, địa chỉ từ xa và URL trang hiện tại.

Bây giờ là phần tính toán. về cơ bản khi người dùng lần đầu tiên đến trang của bạn $ _SERVER ['http_referer'] sẽ không nằm trong miền của bạn. Sau đó giữ dấu thời gian làm thời gian bắt đầu.

Bây giờ hãy kiểm tra dấu thời gian tiếp theo. Nếu http_referer giống với URL trang bản ghi trước đó thì hãy tìm sự khác biệt trong dấu thời gian để biết số người dùng đã ở trong một trang.

Nhiều hoặc ít những gì đang cố gắng nói là tìm thời gian giữa mỗi yêu cầu từ người dùng.

Bất lợi của phương pháp này: Khi người dùng đến một trang đóng cửa. không thể tìm thấy thời gian trên trang web của bạn.

0

Phương pháp nhanh chóng và dễ dàng mà tôi đưa ra là khá hữu ích.

Trên mỗi trang của trang web mà tôi muốn theo dõi thời gian trên trang, tôi bao gồm tập lệnh theo dõi.

tôi lấy càng nhiều thông tin càng tốt, và làm cho một mục cơ sở dữ liệu, bao gồm cả giới thiệu, các yêu cầu/trang nạp, user-agent, ip, dấu thời gian, vv

Những timestamps, phối hợp với ip của người dùng, có thể được sử dụng để xác định thời gian người dùng ở trên trang trước (bao gồm cả thời gian tải của trang hiện tại).

Hạn chế duy nhất là tôi không thể xác định thời gian trên trang cuối cùng mà họ truy cập (không phải lúc nào cũng là điều xấu, tôi có thể giảm thời gian rảnh).

Số trang không truy cập được xác định bởi các mục nhập duy nhất bởi một ip nhất định trong một khoảng thời gian xác định (một giờ có thể là đủ).

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