Разлік праглядаў старонак у PHP/MySQL

У мяне ёсць табліца артыкула са шматлікімі артыкуламі. Я хачу, каб адсочваць колькасць гледачоў для кожнага артыкула. Вось мая ідэя, як я планую гэта зрабіць.

У мяне ёсць табліца гледачоў з радкамі: ID , ф , дата , article_id </код >.

article_id is a FOREIGN FIELD referring to the id of the article. So, when a user open up an article, his/her IP address is stored in the table.

Гэта годны падыход? Гэта для асабістага сайта, а не вельмі вялікага сайта.

EDIT: I want to print the number of view on each article page.

1

7 адказы

Выкарыстоўвайце інструмент, як Google Analytics. Гэта дазволіць зрабіць працу значна больш выдасканаленым і вы і працуе на працягу некалькіх хвілін, там больш пра ўнікальныя наведвальніках, чым IP-адрасы!

Калі вы хочаце мець на памяшканні рашэння, паглядзіце на Piwik , што PHP рамкі менавіта для гэтага puprose.

1
дададзена
@StaticVoid: Я выкарыстоўваю інструменты GA. Але я не ведаю, як надрукаваць колькасць карыстальнікаў на старонцы праз GA.
дададзена аўтар xan, крыніца
@Axel Amthor: Я хачу, каб надрукаваць лік праглядаў для кожнай артыкула. Ці будзе GA зрабіць гэта?
дададзена аўтар xan, крыніца
Не наўпрост. Гэтая частка Q стала зразумела пасля рэдагавання пасля майго адказу. Вам трэба толькі захаваць змяняць час у kiind агрэгата, як «Y-м-д» і артыкулы ID. Вы атрымліваеце запіс для кожнага ўдару. У залежнасці ад блізкасці вашага сайта, гэта можа стварыць шмат непатрэбных дадзеных. І час для «хитбоксы» скончыцца, я думаю, што ...?
дададзена аўтар Axel Amthor, крыніца
GA з'яўляецца выдатным рашэннем. Яны таксама праверыць, спасылаецца URL, каб вызначыць, дзе прыйшоў карыстальнік, і гэта будзе стрымліваць ілжывыя ўдары карыстальнікам проста удараючы абнаўлення.
дададзена аўтар StaticVoid, крыніца
Гэта можа быць варта паглядзець на выманне дадзеных з ГА з выкарыстаннем іх API: распрацоўшчыкаў .google.com/аналітыка/devguides/справаздачнасць/ядро ​​/ v3
дададзена аўтар StaticVoid, крыніца

Выкарыстоўвайце інструмент, як Google Analytics. Гэта дазволіць зрабіць працу значна больш выдасканаленым і вы і працуе на працягу некалькіх хвілін, там больш пра ўнікальныя наведвальніках, чым IP-адрасы!

Калі вы хочаце мець на памяшканні рашэння, паглядзіце на Piwik , што PHP рамкі менавіта для гэтага puprose.

1
дададзена
@StaticVoid: Я выкарыстоўваю інструменты GA. Але я не ведаю, як надрукаваць колькасць карыстальнікаў на старонцы праз GA.
дададзена аўтар xan, крыніца
@Axel Amthor: Я хачу, каб надрукаваць лік праглядаў для кожнай артыкула. Ці будзе GA зрабіць гэта?
дададзена аўтар xan, крыніца
Не наўпрост. Гэтая частка Q стала зразумела пасля рэдагавання пасля майго адказу. Вам трэба толькі захаваць змяняць час у kiind агрэгата, як «Y-м-д» і артыкулы ID. Вы атрымліваеце запіс для кожнага ўдару. У залежнасці ад блізкасці вашага сайта, гэта можа стварыць шмат непатрэбных дадзеных. І час для «хитбоксы» скончыцца, я думаю, што ...?
дададзена аўтар Axel Amthor, крыніца
GA з'яўляецца выдатным рашэннем. Яны таксама праверыць, спасылаецца URL, каб вызначыць, дзе прыйшоў карыстальнік, і гэта будзе стрымліваць ілжывыя ўдары карыстальнікам проста удараючы абнаўлення.
дададзена аўтар StaticVoid, крыніца
Гэта можа быць варта паглядзець на выманне дадзеных з ГА з выкарыстаннем іх API: распрацоўшчыкаў .google.com/аналітыка/devguides/справаздачнасць/ядро ​​/ v3
дададзена аўтар StaticVoid, крыніца

Гэта залежыць ад таго, як часта вам трэба адлюстраваць колькасць прагляду. Ваш агульны запыт будзе:

select count(*) from viewers
where article_id='10'

З часам, ваш тэлегледачы табліца будзе расці. Скажам, ёсць мільён запісаў праз 1 год ці два. Цяпер, калі вы паказваеце колькасць гледачоў на кожнай старонцы артыкула або адлюстраванні артыкулаў з большасцю гледачоў, ён пачне уздзейнічаючы на ​​прадукцыйнасці, нават калі знешні ключ індэксуецца. Аднак гэта адбудзецца пасля таго, як вы дадалі сотні артыкулаў з кожны з якіх мае тысячы гледачоў.

Больш аптымальнае рашэнне можа быць, каб захаваць колькасць гледачоў у табліцы артыкулы і выкарыстоўваць яго для адлюстравання вынікаў. Існуючыя Прагледзелі табліцы таксама неабходна забяспечыць не дубляваць запіс (Тое ж карыстальнік, прачытаўшы артыкул у дзесяць разоў павінен быць пазначаны як адзін запіс ня дзесяць).

1
дададзена

паспрабаваць нешта накшталт гэтага

// insert
$query = mysqli_query("REPLACE INTO viewers (ip) VALUES ('" . ip2long($_SERVER['REMOTE_ADDR']) . "')");

// retrieve
list($pageviews) = mysqli_fetch_row(mysqli_query("SELECT COUNT(ip) FROM viewers"));

echo $pageviews;

Read : REPLACE INTO

0
дададзена

Гэта залежыць ад таго, што вы хочаце захоўваць у базе дадзеных. Калі вы хочаце, каб дакладна ведаць, колькі унікальных карыстальнікаў наведалі гэтую пэўныя старонкі (уключаючы дату і ф) гэта разумны спосаб зрабіць гэтага. Але калі вам трэба толькі нумар, каб паказаць, вы можаце змяніць артыкул табліцу і ўключыць новы слупок з visit_counter і захоўваць кук, каб прадухіліць які павялічваецца лічыльнік на той жа карыстальнік.

0
дададзена
Для атрымання больш падрабязнага прылаўка проста выкарыстоўваць Google Analytics.
дададзена аўтар J33nn, крыніца

У гэтай канструкцыі, Існуе адно пытанне, калі ж карыстальнік павінен адкрыць яго зноў і зноў, то альбо вы павінны паставіць праверку перад ўставіць запіс або ўставіць той жа IP-адрас некалькі разоў, але розныя адзнакі часу.

Большасць папулярных сайтаў лічыць адзін IP-адрас у якасці аднаго з пунктаў гледжання, нават калі гэты кліент або карыстача адкрыць гэтую артыкул некалькі разоў.

Я магу думаць аб рашэнні.

  1. ваш падыход з адной праверкі. калі ж кліент адкрыў яго зноў не ўставіць. ці групы па Id пры выманні лічыльніка.
0
дададзена
@ Av1987: Так, я павінен спачатку праверыць, ці з'яўляецца IP ўжо там ці не.
дададзена аўтар xan, крыніца
Вызначэнне унікальных наведвальнікаў па іх IP-адрасе звычайна лічыцца дрэнным ходам ...
дададзена аўтар Axel Amthor, крыніца

Так, гэта добра, калі вы Падыход стварыць нейкае кэш для адлюстравання, колькі праглядаў кожнай артыкула была. Гэта не з'яўляецца аптымальным для падліку праглядаў кожны раз карыстальнік павінен адкрыць вэб-сайт.

  1. You can do it in SQL Server. There is something like materialized view. ( https://code.google.com/p/flexviews/ )

    select article_id, count(*) as views from viewers group by article_id
    
  2. Or you can cache it in files and refresh every X time.

  3. To store users who viewed article I suggest using AJAX. When user open website, another 'thread' will call website to add his as viewer. Even if your db is slow, it will not slow down website loading, also web spiders will not be counted.

0
дададзена