How to track page views
Asked Answered
N

3

7

What is the best way to track page views? For instance: SO has how many views a Question has, yet hitting refresh doesn't up the view count.

I've read that using cookies is a pretty good way to do so, but I'm at a loss on how this doesn't get out of hand.

I've searched all over and can't find a good answer for this.

EDIT:

I also see that another option (once again I could be horribly wrong) is to use Google Analytics API to get page views. Is this even an viable option? How does Stackoverflow, youtube, and others track their views?

Nutrient answered 19/10, 2010 at 4:7 Comment(4)
what programming language? server side? client side? third party? roll your own?Plautus
GA is a great option. Or you can run reports on your server logs, like grep for how many GETs are for index.html.Grindle
I'm working on a new project using the yii framework (which I don't have very much experience with).Nutrient
I know this is old, but just though I would mention that one of the best ways is to store the data in a cookie (if available) on in a session variable as a final solution (because this uses server resources). In your cookie/session variable don't store the ip address (because this ip address could be shared), but rather assign them a session id (sid). You can use a GUID in .net or a UUID if you are not in .net.Fannyfanon
P
4

You can track them in a database if you're rolling your own. Every time a page loads, you call a method that will decide whether or not to up the page views. You can add whatever criteria you like.

IF IP is unique
OR IP hasn't visited in 20 minutes based on a session variable
ETC
THEN add a page view record

| ID | IPAddress | ViewDateTime |
| 1  | 1.2.3.4   | Oct 18 ...   |

However, session variables can get pretty load intensive on sites with as many visitors as SO. You might have to get a little more creative.

Now, if you don't want to code it, the I would suggest looking into SmarterStats as it reads your server logs and is more robust than analytics.

note: i'm not sure about a similar Apache software

Plautus answered 19/10, 2010 at 4:17 Comment(0)
P
0

I set a session variable with the address I'm checking, then toggle it if it's been hit by that browser. In my page template I then check the var for that page and handle as appropriate.

Pincers answered 19/10, 2010 at 4:16 Comment(0)
Y
0

A simple, hacky method:

Create local MySQL table for tracking:

CREATE TABLE pageviews ( pageview_count int(9) default NULL )

Then, on the index.php page, or wherever the user is going to be landing, you can run an update query on that field.

<php
$link = mysql_connect('localhost','root',''); 
if (!$link) {
    die('could not connect ' .mysql_error());
}
$mysql = mysql_select_db($database_name,$link);
$query = mysql_query('UPDATE pageviews set pageview_count = pageview_count + 1;');
mysql_close();
Yokefellow answered 11/10, 2013 at 23:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.