Как отслеживать просмотры по элементу а-ля YouTube? - PullRequest
4 голосов
/ 07 мая 2009

Я хотел бы иметь возможность отслеживать просмотры элемента таким образом, чтобы я мог видеть, какие элементы были наиболее просматриваемыми вчера, на прошлой неделе или в любой заданный период. Как я могу сделать это с помощью PHP или Rails? Есть ли в Rails плагин для этого или есть простой способ сделать это с помощью PHP / memcached?

Ответы [ 3 ]

2 голосов
/ 07 мая 2009

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

Компромиссом может быть запись строки для каждого представления в промежуточную таблицу в памяти и периодическое (возможно, с помощью задания cron или каждого N представлений) обновление совокупного числа в основной таблице. Если ваша нагрузка на чтение действительно высока, то вы могли бы рассмотреть возможность сохранения этого временного счетчика в memcached; как вы заметите, чем реже вы пишете в таблицы на жестком диске, тем менее отказоустойчивым становится ваш счетчик, хотя в случае простого счетчика популярности это, вероятно, не критичные данные.

Как только вы подсчитаете количество просмотров страниц, вы можете выполнить любой статистический анализ, какой пожелаете.

0 голосов
/ 07 мая 2009

Для каждого представления сохраните некоторые данные в таблицу SQL.

  • Уникальный идентификатор
  • Идентификатор товара
  • Дата (например, unixtime)
  • IP-адрес пользователя

Тогда вы можете СЧИТАТЬ (id) ГДЕ id = число И дата> на прошлой неделе

SELECT COUNT(id) FROM view_table WHERE id = 1 AND date > 1241136000
0 голосов
/ 07 мая 2009

У вас может быть простая таблица SQL с идентификатором видео, датой и целочисленным счетчиком, увеличенными для каждого представления.

Чтобы отфильтровать несколько просмотров с IP-адреса, используйте таблицу, содержащую идентификатор видео и IP-адрес. Сокращайте его каждые 24 часа и увеличивайте счетчик только в том случае, если IP-адрес еще не указан в этой таблице.

...