2012-05-11 3 views
1

Я пытаюсь создать сайт на основе статьи с помощью codeigniter. Когда любая статья запрашивается для извлечения из базы данных для просмотра, я использую следующий код, чтобы отметить количество уникальных представлений каждой статьи в отдельной таблице, называемой «хитами».Каков наиболее эффективный способ вести учет количества просмотров uniqie статьи

mysql_query("INSERT INTO hits(ip,article_slug,hitcount) 
      VALUES('$ip_address','$id',1) 
      ON DUPLICATE KEY UPDATE hitcount=hitcount+0"); 

Я беру IP-адрес пользователя и получить значение article_slug от $ this-> uri-> сегмент (3); , а затем выполнить вышеуказанный запрос mysql.

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

Так что мне было интересно, что это самый эффективный способ сделать это. Один из моих друзей говорил об этом с помощью файлов cookie вместо IP-адреса. Вы думаете, что это хорошая идея или есть лучший способ сделать это?

Не могли бы вы дать мне представление о том, как это сделать?

Заранее спасибо :)

+0

cookie не даст вам окончательного подсчета, поскольку они всегда могут быть очищены, а затем вы будете считать одну и ту же машину. – gorelative

+0

Я не думаю, что это возможно на том уровне, который вы хотите. У меня динамический ip. Если я просмотрю сайт, это увеличит количество обращений, но я тот же человек. Или может быть общий ip. Значит, количество ваших хитов будет меньше, чем должно быть. – itachi

+0

Я не думаю, что есть простой способ сделать это. Вы не можете полагаться на IP-адреса или файлы cookie, чтобы надежно идентифицировать человека. Вы можете получить несколько более точные результаты, если вы заставите пользователей зарегистрироваться, а затем войдите в систему, прежде чем они смогут видеть каждую страницу, а затем отслеживать эти хиты, но есть большая работа, связанная с настройкой этого; принуждение людей к входу для чтения статей отключит людей с вашего сайта; и нет никакого способа гарантировать, что у кого-то есть только одна учетная запись. Тем не менее, если вы готовы принять некоторую неопределенность, я бы рекомендовал использовать cookie-подход. – andrewsi

ответ

0

Я бы рекомендовал использовать Google Analytics и создания пользовательского отчета, который отслеживает только взгляды статьи. Это даст вам информацию, которую вы ищете, плюс многое другое, и это позволит избежать подсчета ботов (например, Google, Bing или SPAMer).

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

session_start(); 

$user['ip'] = $_SERVER['REMOTE_ADDR']; 
$user['sid'] = session_id(); 
+0

Хорошая точка зрения: уменьшить нагрузку на MySQL и многое другое. –

+0

@ user1390126 Большое спасибо за ваш ответ. Но если я использую google analytics, я смогу показать количество просмотров статей рядом с этой статьей на моем веб-сайте? –

+0

Если вы используете СЕССИЮ, не будет ли она повторно установлена, когда пользователь закрывает свой браузер? – andrewsi

0

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

Таким образом, вы можете использовать комбо и того и другого, чтобы получить лучшие результаты. Вы можете использовать cookie или сеанс. Но если вы используете cookie и даете ему срок действия около года или более, и если вы укажете какой-то уникальный хеш для файла cookie (который может быть md5 основного ключа таблицы журнала), а затем вы можете хорошо отслеживать пользователей.

дайте мне знать, если вы не понимаете, что я имею в виду.

+0

Спасибо за ваш ответ. Я попытался понять, что вы пытались понять, но я потерпел неудачу. Не могли бы вы немного объяснить некоторые примеры кода (так мне было бы легче) Спасибо большое :) –

+0

У меня также есть вопрос .. почему я должен установить срок годности более или менее? Пожалуйста, объясните это также. Спасибо –

+0

Конечно, когда вы устанавливаете время истечения срока действия cookie, cookie будет существовать в браузере посетителей, если пользователь очистит все файлы cookie вручную или файл cookie истекает через определенный промежуток времени, который может быть как год, так и 20 лет по вашему желанию. Но год или 2 могут быть практичными, поскольку люди либо меняют свой браузер, либо ноутбук/компьютер в течение 2/4 лет. :-) – Dharmavir

Смежные вопросы