Журнал доступа к веб-странице

Задача
Вы хотите знать о странице нечто большее, чем просто количество обращений к ней, например, время доступа и хост пользователя, запросившего страницу.

Решение
Ведите журнал доступа, а не просто счетчик посещаемости.

Обсуждение
Таблица hitcount хранит только счетчик посещаемости каждой зарегистрированной в ней страницы. Если вы хотите учитывать и другую информацию, используйте иной подход. Предположим, что вам нужно отслеживать клиентский хост и время обращения к странице для каждого запроса. В этом случае для каждой страницы нужен не просто счетчик, а журнал. Но можно продолжать хранить и счетчики, используя составной индекс, объединяющий путь страницы и столбец последовательности AUTO_INCREMENT:

CREATE TABLE hitlog
(
path VARCHAR(255) BINARY NOT NULL,
hits BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
t TIMESTAMP,
host VARCHAR(64),
PRIMARY KEY (path,hits)
);

Для вставки новой записи используйте такой запрос:

INSERT INTO hitlog (path, host) VALUES(значение_пути,значение_хоста);

Например, для страницы JSP обращения можно регистрировать так:

<%= request.getRemoteHost () %>

<%= request.getRemoteAddr () %>

UNKNOWN


INSERT INTO hitlog (path, host) VALUES(?,?)
<%= request.getRequestURI () %>



Таблица hitlog обладает рядом полезных свойств:

• Время обращения автоматически записывается в столбец t типа TIMESTAMP при добавлении новой записи.

• Столбец path связывается со столбцом hits типа AUTO_INCREMENT, благодаря чему значение счетчика для определенной страницы автоматически увеличивается при каждой вставке новой записи для такого пути.


Счетчики ведутся отдельно для каждого отличного значения path.

• Нет необходимости в проверке существования счетчика для определенной страницы, так как запись вставляется в таблицу при любом, а не только при первом обращении к странице.

• Если вы хотите определить текущие счетчики для каждой страницы, выберите записи для всех различных значений path с наибольшим значением hits:

SELECT path, MAX(hits) FROM hitlog GROUP BY path;

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Ведение журнала Apache с помощью MySQL
Выполнение поиска и получение результатов
Загрузка в форму записи базы данных
Использование ввода через Web для формирования запросов
Обработка загружаемых файлов