Я не использую codeIgniter, но вот как вы можете сделать это прямо на php.
По сути, вы можете либо использовать сеансы для записи каждого посещения вашего сайта и записи запросов их страниц, либо вы можете просто записывать каждое посещение страницы. Первый вариант дает вам больше информации (сколько уникальных обращений было сделано, сколько обращений от вернувшихся посетителей и т. д.), но требует больше программирования для настройки и требует управления сеансом пользователя. Итак, для ваших целей я объясню вариант 2.
SQL:
Table 'pageViews'
Id - Integer, auto Increment, primary key
page - varchar(150)
datetime - datetime
На странице, которую вы отслеживаете, вы должны добавить:
$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
Затем вы можете извлекать строки из базы данных на основе страницы и отметки даты и времени, подсчитывать результаты и отображать их с помощью холста html5. Или, поскольку у каждого обращения есть дата и время, вы можете разбить его на часы дня и т. д.
Надеюсь, это поможет.
Чтобы изменить это для простых ежедневных счетчиков, добавьте дополнительный столбец под названием «просмотры», который является просто целым числом. Затем на странице поставьте галочку, чтобы увидеть, есть ли строка для текущей страницы на сегодняшний день в БД. Если это так, то получите текущее значение просмотров, увеличьте его и перепродайте в БД.
Для общего количества просмотров я бы, вероятно, создал еще одну таблицу с теми же столбцами, но без столбца даты и времени. Затем на своей странице вы также увеличиваете значение просмотров для текущей страницы в новой таблице.
Это было бы молниеносно. Компромисс — потеря деталей. Итак, вот MySQL и PHP для этого третьего варианта:
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.
person
Marvin
schedule
01.12.2012