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.