Tôi đang tìm cách theo dõi thời gian trung bình của người dùng trên một trang web (giống như cách Google Analytics thực hiện) cho quản trị nội bộ.Cách theo dõi thời gian của người dùng trên trang web
Cách dễ nhất để thực hiện việc này là gì?
Tôi đang tìm cách theo dõi thời gian trung bình của người dùng trên một trang web (giống như cách Google Analytics thực hiện) cho quản trị nội bộ.Cách theo dõi thời gian của người dùng trên trang web
Cách dễ nhất để thực hiện việc này là gì?
Bạn có thể có được thời gian theo những cách sau:
Nếu bạn cần, tôi có thể viết một tập lệnh mẫu.
UPDATE:
<!DOCTYPE html>
<html>
<head>
<title>Collect time</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function()
{
var start = null;
$(window).load(function(event) {
start = event.timeStamp;
});
$(window).unload(function(event) {
var time = event.timeStamp - start;
$.post('/collect-user-time/ajax-backend.php', {time: time});
})
});
</script>
</head>
<body>
</body>
</html>
Và kịch bản backend:
<?php
$time = intval($_POST['time']);
if (!file_exists('data.txt')) {
file_put_contents('data.txt', $time . "\n");
} else {
file_put_contents('data.txt', $time . "\n", FILE_APPEND);
}
Nhưng như tôi đã nói nó wouldn`t làm việc tại trình duyệt Opera
đó là 'window.onunload' – jordanstephens
yes you're right - tôi đã phạm sai lầm, xin lỗi –
Tuyệt vời, cảm ơn sự giúp đỡ - Tôi rất muốn xem một kịch bản nếu bạn có thời gian để viết nhanh? Tôi có thể sử dụng page.unload trên toàn bộ miền không? – Walker
cách chính tôi có thể nghĩ:
Khi người dùng đầu tiên truy cập một trang, bạn đăng nhập, ví dụ, địa chỉ IP của họ, các trang được nạp, và thời điểm đó. Sau đó, bằng cách sử dụng một số Javascript và AJAX, khi họ rời khỏi trang, bạn sử dụng sự kiện unload
để gửi đến trình xử lý AJAX ghi lại trang và khi họ rời khỏi.
Bạn cần sử dụng một số loại ID, ngoài phiên, để lưu trữ lượt truy cập trang. Giả sử tôi có 5 lần mở trang chủ, bạn muốn đăng nhập từng trang riêng lẻ. Vì vậy, một cái gì đó như thế này:
index.php
mã: 2345
)Nếu họ truy cập index.php
một lần nữa, bạn sẽ tạo ra một mã khác, giả sử, 36789
. Sử dụng cái gì đó tạo ra một GUID ngẫu nhiên là tốt nhất, vì vậy bạn có thể (về cơ bản) bỏ qua bất kỳ khả năng va chạm nào trên cùng một kết hợp IP/trang/mã.
Và bạn sẽ làm gì, nếu tại sự kiện tải xuống trình duyệt Opera không hoạt động? –
@DimaKrasun Tôi không nhận ra đó sẽ là một vấn đề. Nghĩ rằng nó đã được hỗ trợ trong tất cả các trình duyệt, nhưng tôi đã không đụng đến Opera nhiều. Học điều mới mỗi ngày. – Tarka
Có thực sự không phải là một cách hiệu quả để làm điều này với PHP, vì PHP là phía máy chủ và không cung cấp cách nào để xác định thời điểm trang bị đóng. Bạn cần sử dụng javascript để xác định điều này.
Điều tôi sẽ làm là sử dụng javascript để bắt đầu hẹn giờ trên window.onload
và sau đó kết thúc bộ hẹn giờ trên window.onunload
. Sau đó, bạn có thể lưu trữ dữ liệu và làm những gì bạn muốn với nó.
$ (cửa sổ) .unload là một chức năng rất tốt để theo dõi trang người dùng rời khỏi trang.
nhưng một điểm là khi cửa sổ tải xuống để gửi ajax đôi khi nó hoạt động, ajax chưa kết thúc khi người dùng rời khỏi trang. do đó, bạn cần thêm một thuộc tính (async: false) vào ajax, mã sẽ bị thổi:
$.ajax({
type: 'POST',
async: false,
url: '/collect-user-time/ajax-backend.php',
data: {time: time}
});
Bạn không thể sử dụng dữ liệu Google Analytics? – ChrisF
Đã có một tá gói làm điều này. Đừng sáng tạo lại bánh xe nếu bạn không cần. Nhìn vào webalizer, awstats, nhím, vv Đây thực sự là một vấn đề không tầm thường. Việc xác định "thời gian trên trang web" yêu cầu đưa ra một số giả định, vì bạn chỉ biết khi nào trình duyệt yêu cầu nội dung, không phải khi người dùng đóng cửa sổ, điều hướng đến trang web từ xa, v.v. –
Chúng tôi cung cấp một bảng công việc cho phép quản trị viên đến và kiểm soát các phân đoạn cụ thể của cơ sở người dùng và chúng tôi muốn cung cấp phân tích quản trị cho họ. – Walker