Эффективное отслеживание просмотров страниц и загрузок файловPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Эффективное отслеживание просмотров страниц и загрузок файлов

Сообщение Anonymous »

Я разрабатываю рынок плагинов Minecraft, и мне нужен надежный и эффективный способ отслеживания просмотров страниц и загрузок файлов. Меня интересует только отслеживание просмотров и загрузок ресурсов (плагинов), размещенных на сайте.
Я создал этот пост, потому что встречал много похожих вопросов, но они либо устарели, либо нет. особенно полезно для моего конкретного случая использования. Я осознаю, что моя текущая структура таблиц может быть не самой лучшей, поэтому приветствуются любые предложения по ее улучшению. Вот подход, который я пробовал до сих пор:
Отслеживание просмотров страниц:
Я создал таблицу resources_views:

Код: Выделить всё

CREATE TABLE resource_views (
view_id INT AUTO_INCREMENT PRIMARY KEY,
ip_address CHAR(64) NOT NULL,
user_id VARCHAR(10),
resource_id VARCHAR(5) NOT NULL,
update_id VARCHAR(5) NOT NULL,
first_viewed_at DATETIME NOT NULL,
last_viewed_at DATETIME NOT NULL,
UNIQUE KEY (
ip_address,
user_id,
resource_id,
update_id
)
);
Основные особенности этого дизайна:
  • Он гарантирует отсутствие дублирующихся строк за счет создания уникальной комбинации ip_address >, , resources_id и update_id.
  • Он обновляет last_viewed_at вместо создания новых строк, если
    критерии совпадают.
  • Чтобы предотвратить рассылку спама (например, когда пользователь обновляет страницу), он обновляет
    метку времени только в том случае, если последний просмотр был более 30 минут назад.
    Отслеживание загрузок:
    Аналогично я отслеживаю загрузки в таблице resources_downloads:

    Код: Выделить всё

    CREATE TABLE resource_downloads (
    ip_address VARCHAR(65) NOT NULL,
    user_id VARCHAR(10) DEFAULT NULL,
    resource_id INT NOT NULL,
    update_id INT NOT NULL,
    first_downloaded_at DATETIME NOT NULL,
    last_downloaded_at DATETIME NOT NULL,
    PRIMARY KEY (ip_address, resource_id, update_id),
    CONSTRAINT unique_download UNIQUE (ip_address, user_id, resource_id, update_id)
    );
    
    Здесь также:
    • Код: Выделить всё

      last_downloaded_at
      обновляется, если критерии совпадают.
    • Ограничение UNIQUE предотвращает дублирование строк для одного и того же IP-адреса или
      пользователя.
    • Он позволяет отслеживать загрузки каждого ресурса и
      обновления конкретного ресурса.
    Мои вопросы:
    • Это хороший подход для отслеживания просмотров и загрузок ресурсов
      и предотвращения спам и экономия места в базе данных?
    • Есть ли лучшие или более эффективные альтернативы для достижения этой цели,
      особенно для систем с высоким трафиком?
    • Повысит ли использование другой структуры базы данных, например агрегирование
      просмотров/загрузок в ежедневную сводную таблицу, производительность
      в долгосрочной перспективе?
    Мои основные цели:
    • Минимизируйте размер базы данных и предотвращайте дублирование строк.
      Поддерживайте отзывчивость системы как к высокому трафику, так и к частым
      обновлениям.
    Будем признательны за любые предложения и улучшения!

    Подробнее здесь: https://stackoverflow.com/questions/792 ... -downloads
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»