Счетчик посещений - нужен ли мне отдельный стол?

Я читал о различных способах реализации счетчика посещений. Больше всего мне понравилось наличие флага сеанса/куки для конкретного пользователя, чтобы указать, посещал ли он/она определенную страницу. Если флаг не установлен, я бы установил его и увеличил количество просмотров страницы на 1.

Я знаю, что описанный выше метод хорош, но я также понимаю, что у него всегда будет обходной путь. Но если я использую выделенную таблицу с уникальным ограничением на комбинацию page_id и ip_address, она должна работать наиболее эффективно при использовании с комбинацией флага сеанса. Но, учитывая, что сайт, над которым я работаю, имеет около 20000 посещений в день (что немного, но достаточно, чтобы заполнить мою таблицу посещений), стоит ли заливать MySQL IP-адресами только для захвата посещений?

Кроме того, есть ли лучший способ запечатлеть законные хиты, кроме этих?


person Sayak Banerjee    schedule 22.06.2013    source источник
comment
есть только 2 способа подсчета посещений: куки и IP. куки можно стереть, чтобы вы могли играть в систему таким образом. и IP-адреса могут совместно использоваться МНОГИМИ пользователями (например, крупномасштабный шлюз NAT, такой как AOL). один позволяет искусственно раздувать счет. другой СКРЫВАЕТ несколько действительных попаданий. счетчики посещений в Интернете в лучшем случае приблизительны и, как правило, совершенно бесполезны   -  person Marc B    schedule 23.06.2013
comment
Согласен, тогда я выберу маршрут сеанса/куки. По крайней мере, они не могут залить страницу хитами, если я храню набор данных сеанса на стороне сервера. Спасибо за ответ.   -  person Sayak Banerjee    schedule 23.06.2013
comment
Вы также можете реализовать сеансы на стороне сервера и проверить их, прежде чем запрашивать MySQL, чтобы узнать, посещали ли они когда-либо. Не будет проблемой сделать что-то вроде: if(!isset($_SESSION['counter']['pageID'])), например... затем запросить у MySQL конкретную дату и страницу доступа. Если он не существует, продолжайте его вставлять и устанавливать сеанс.   -  person Rob W    schedule 23.06.2013
comment
сеансы реализуются через файлы cookie. стирание файлов cookie означает стирание сеансов. сеанс все еще будет существовать на вашем сервере, но связь между этим сеансом и пользователем, который его запустил, будет разорвана.   -  person Marc B    schedule 23.06.2013
comment
@MarcB: имеет смысл, я думаю, в файлах cookie на стороне клиента хранится какой-то идентификатор сеанса? Но я думаю, этот риск стоит того, чтобы принять во внимание недостатки производительности выделенного стола.   -  person Sayak Banerjee    schedule 23.06.2013
comment
да. именно так это и работает. php установит на клиенте файл cookie, содержащий идентификатор сеанса, который они используют. этот идентификатор затем используется для загрузки соответствующего файла сеанса, когда этот пользователь возвращается на сайт. удалить файл cookie сеанса, и сеанс пользователя будет потерян, и php увидит их как совершенно нового пользователя.   -  person Marc B    schedule 23.06.2013


Ответы (1)


Я думаю, что это слишком много работы, чтобы иметь для этого специальный стол. Делайте это только в том случае, если это действительно необходимо. В противном случае это просто пустая трата времени и ресурсов. Поле в существующей таблице, которое увеличивается, и, в конечном итоге, файл cookie для отключения увеличения при обновлении - это нормально.

person Vuk Stanković    schedule 22.06.2013
comment
Конечно. Думаю, тогда я выберу маршрут сеанса/куки. Спасибо за ответ! - person Sayak Banerjee; 23.06.2013