tôi không sử dụng CodeIgniter nhưng đây là cách bạn có thể làm điều này trong php thẳng.
Về cơ bản, bạn có thể sử dụng phiên để ghi lại mỗi lượt truy cập vào trang web của mình và ghi lại yêu cầu trang của họ hoặc bạn có thể chỉ cần ghi lại từng lần truy cập trên trang. Tùy chọn đầu tiên cung cấp cho bạn thêm thông tin (số lần truy cập duy nhất được tạo, số lượt truy cập từ khách truy cập quay lại, v.v.) nhưng cần nhiều lập trình hơn để thiết lập và yêu cầu quản lý phiên người dùng. Vì vậy, mục đích của bạn tôi sẽ giải thích tùy chọn 2.
SQL:
Table 'pageViews'
Id - Integer, auto Increment, primary key
page - varchar(150)
datetime - datetime
Trên trang bạn đang theo dõi, bạn sẽ thêm:
$query2 = "INSERT INTO `pageViews` (page, datetime) VALUES ('".$_SERVER["SCRIPT_NAME"]."', ".date("Y-M-d H:I:s").")";
$result2 = //insert DB connection etc. to apply update to DB
Sau đó bạn có thể lấy các hàng từ db dựa trên trang và dấu ngày giờ, đếm kết quả và hiển thị nó bằng cách sử dụng canvas html5. Hoặc, bởi vì mỗi lần truy cập đều có ngày giờ, bạn có thể chia nhỏ hơn nữa thành giờ trong ngày, v.v.
Tôi hy vọng điều này sẽ hữu ích.
Để sửa đổi điều này cho các bộ đếm hàng ngày đơn giản, hãy thêm cột bổ sung gọi là 'lượt xem' chỉ là số nguyên. Sau đó, trên trang đặt một kiểm tra để xem nếu có một hàng cho trang hiện tại cho ngày hôm nay trong db. Nếu vậy, sau đó nhận giá trị hiện tại của lượt xem và tăng giá trị đó và bán lại cho DB.
Đối với tổng số lượt xem, tôi có thể tạo một bảng khác có cùng cột nhưng không phải với cột ngày giờ. Sau đó trên trang của bạn, bạn cũng tăng giá trị lượt xem cho trang hiện tại trong bảng mới.
Điều này sẽ sáng nhanh. Sự cân bằng là mất chi tiết. Vì vậy, đây là MySQL và PHP cho 3 tùy chọn này:
MySQL:
Table 'dailyViews'
Id - Integer, auto Increment, primary key
views - integer
page - varchar(150)
datetime - datetime
Table 'totalViews'
Id - Integer, auto Increment, primary key
views - integer
page - varchar(150)
PHP:
// Search the DB for an entry today for this page in dailyViews
$query = "SELECT views FROM `dailyViews` WHERE `page`='".$_SERVER["SCRIPT_NAME"]."' AND `datetime`=".date("Y-M-d H:I:s")."";
$result = //insert your db connection etc to execute the query
if (mysqli_num_rows($result)==1) {
$resultArray = mysqli_fetch_array($result, MYSQLI_ASSOC);
$views = $resultArray['views']+1;
$query2 = "UPDATE `dailyViews` SET `views`=".$views." WHERE `page`='".$_SERVER["SCRIPT_NAME"]."' AND `datetime`=".date("Y-M-d H:I:s")."";
$result2 = //insert DB connection etc. to apply update to DB
} else if (mysqli_num_rows($result)<1) {
$query2 = "INSERT INTO `dailyViews` (views, page, datetime) VALUES (1, '".$_SERVER["SCRIPT_NAME"]."', ".date("Y-M-d H:I:s").")";
$result2 = //insert DB connection etc. to apply update to DB
} else {
// there is more than one entry for this page and date in the DB. An error has ccurred
}
// Then just get the total views for this page and increase it by 1.
Tôi đã cập nhật câu trả lời của mình. Trong tò mò, trang web là gì? Tôi rất ngạc nhiên khi bạn mong đợi hàng triệu lượt truy cập mỗi ngày. – Marvin
Của nó chủ yếu là ra quan tâm, tôi sẽ không cần phải sử dụng một kịch bản như thế này ngay bây giờ, nhưng tôi bắt đầu làm việc trên một số trang web lớn hơn vì vậy có lẽ sẽ cần nó trong tương lai :) – Adam