1

Вопрос по database, mysql, php – Может ли использование счетчика представлений, чувствительного к IP-адресам, нести слишком большую нагрузку для MYSQL / PHP?

Я уверен, что это не проблема для 10000 строк MYSQL, но что, если у нас есть сотни тысяч или даже миллионы строк?

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

Есть ли альтернатива? Или я должен придерживаться не IP-чувствительного счетчика? В моем приложении этот счетчик виден только продавцу товара, а не пользователям, некоторые из которых, возможно, захотят поиграть со счетчиком и обновить его много раз. Поэтому, если они не видят счетчик, они не будут играть с освежающим напитком.

Заранее спасибо,

С уважением

  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от alexx0186
  • Error: User Rate Limit Exceeded

    от alexx0186
  • Error: User Rate Limit Exceeded

    от alexx0186
  • 1

    Есть много разных подходов к этому. Одним из способов было бы иметь жу

    рнал item_id, ip_address и date с уникальным индексом по всем трем столбцам. Тогда сделайINSERT IGNORE в стол -

    CREATE TABLE `test`.`view_log` (
      `item_id` INTEGER UNSIGNED NOT NULL,
      `ip_address` INTEGER UNSIGNED NOT NULL,
      `date` DATE NOT NULL,
      PRIMARY KEY (`item_id`, `ip_address`, `date`)
    );
    
    INSERT IGNORE INTO view_log ($item_id, INET_ATON('$ip_address'), CURRENT_DATE);
    

    Примечание: это будет работать только для IPv4. Для поддержки IPv6 вам необходимо использовать другой метод для хранения IP-адресов.

  • 1

    IP-адреса в основном целые числа.

    Храните их как целые числа и используйте индекс в соответствующем столбце - запросы будут выполняться очень быстро. Просто помните, что IPv6-адреса слишком велики для 32-битных целых чисел, поэтому вы можете использовать varchar (16) и хранить двоичные представления ваших IP-адресов.

    Что касается производительности вашего приложения, на мой взгляд, всегда полезно использовать какую-то систему кеширования для такой статистики. Например, восстановить вашу статистику, только если прошел определенный промежуток времени.