Отслеживание просмотров страниц и отображение ежедневных, еженедельных, ежемесячных результатов - PullRequest
4 голосов
/ 22 октября 2011

Платформа: PHP5, MySQL

У меня есть веб-сайт, на котором отображаются статьи, отсортированные по категориям. Я хотел бы отслеживать количество просмотров для каждой статьи. Затем в боковой панели отобразите 5 самых просматриваемых статей за текущий день, за прошедшую кротость и за последний месяц. Как вы думаете, что будет лучшим способом сделать это? Одна строка в базе данных для каждого представления (article_id, timestamp)? Какой будет минимальный объем работы для сервера?

Спасибо, Джо

Ответы [ 2 ]

2 голосов
/ 22 октября 2011

Это может стать сложной проблемой.Если вы просто сохраняете необработанные хиты, ваша таблица будет быстро расти, а сокращение чисел будет занимать больше времени.Таким образом, один из способов справиться с этим - создать статистические таблицы и обработать числа с помощью задания cron.

Например, у вас могут быть следующие таблицы

  • hit_count: article_id, отметка времени
  • hit_count_daily: день, год, article_id, hit_count
  • hit_count_weekly: неделя, год, article_id, hit_count
  • hit_count_monthly: месяц, год, article_id, hit_count
  • hit_count_yearly: year, article_id, hit_count

Вы тогдаобработать данные в таблице hit_count, добавить их в таблицы агрегирования, а затем удалить данные из таблицы hit_count.

Вам также нужно подумать о том, что произойдет, если кто-то обновит страницу или Google сканирует статью,Хотите ли вы считать их попаданиями?

Чтобы сканеры не инициировали попадания, вы можете использовать Javascript на странице, чтобы связаться с вашим сервером и зарегистрировать попадание.Таким образом, обычный браузер будет инициировать попадание, но сканер не будет.

Вы также можете перенести эту задачу в другой сервис, например Chartbeat или Clicky

0 голосов
/ 22 октября 2011

Как насчет:

Добавьте это к php.ini

auto_append_file = /server_root/footer.php

В footer.php содержится тихая процедура для записи данных SQL.

...