php - уникальный счетчик посетителей с высоким трафиком

Я хотел бы добавить счетчик посетителей на мой сайт.

Макс Статистика:

1 миллион просмотров в минуту

6 запросов на загрузку страницы

Поэтому я спрашиваю вас,является ли MYSQL и PHP уникальным счетчиком посетителей лучшим решением?

Или я должен использовать что-то другое?

1 ответ

Решение

Для 1 миллиона просмотров в минуту, когда вы считаете количество просмотров как счетчик посещений (более того, с проверкой дубликатов)... php / mysql не будет работать очень хорошо (если у вас нет большой фермы серверов).

Если вам нужно отслеживать попадания в реальном времени, я бы сделал это, используя комбинацию nginx + redis http://redis4you.com/code.php?id=009 + javascript, не используя php и mysql вообще.

1 - Jquery (или javascript) может проверить, есть ли у пользователя cookie, и если нет, сохранить "уникальный случайный cookie хеша" для каждого (user + page) (не просто использовать ip, потому что несколько пользователей за прокси могут использовать тот же ip, например: крупные компании с прокси для интернета, университеты, общедоступный wifi и т. д.).

2 - После генерации хеша или, если cookie существует, Jquery может решить сделать асинхронный запрос к серверу nginx, используя хеш в качестве идентификатора.

3 - Nginx может напрямую общаться с Redis через апстрим (очень быстро) ( https://github.com/openresty/redis2-nginx-module), а также при необходимости может проверять наличие файлов cookie.

4 - Redis очень быстр и может автоматически увеличивать значения (попадания) на основе значения ключа (например, идентификатора страницы), сохраняя перезагрузки (в отличие от memcache).

5 - Вы можете легко запросить redis из php (например, memcache), чтобы отобразить счетчик посещений на любой странице.

===

Другим возможным способом (но не в реальном времени) было бы установить окно с nginx и включить журнал доступа.

1 - На вашем сайте включите JavaScript, который вызывает файл на этом сервере nginx, например: http://stats.server.com/hit.js?page=12345&userhash=some_md5_hash_here

2 - Настройте задание cron на сервере nginx для анализа этих журналов на предмет уникальных представлений.

3 - Nginx может легко обслуживать 20K запросов в секунду на машине E3 1230v2.

Другие вопросы по тегам