There are lots of real time web stats services on the web (w3counter-histats-gostats).They just count once when page is requested , But what I want to do is track javascript functions/events, because my website is fully-ajax.So I want something like google analytic's event tracker (http://code.google.com/intl/en/apis/analytics/docs/gaJS/gaJSApiEventTracking.html) , but real time , and very simple .It can be hosted or just a php script.Thank you .
example events
- user created something
- user deleted something
- ajax error happend
- browser eror happend
- user logged in
I found my answer take a look
6 Answers 6
It's not so hard to implement your own. You just send request to the server when an event happens like: tracker.gif?action=create&what=sth, tracker.gif?action=error&what=k_is_undefined, etc.
Then you parse the server logs for the stats. (or you send your request right into the database by tracker.php?action=create&what=sth)
Since you control the site it's now easy to make these requests when a user logs in, or an ajax request fails.
For error handling you can use window.onerror:
// send a request about an event to the server
function fireEvent(action, message, options) {
var loggerUrl = "/tracker.gif", parameters;
options = options || {};
options.url = options.url || window.location.href;
options.user_agent = navigator.userAgent;
options.message = message;
for (var i in options) {
if (options.hasOwnProperty(i)) {
parameters += "&" + i + "=" + encodeURIComponent(options[i]);
}
}
new Image().src = loggerUrl + parameters;
}
// log script errors
window.onerror = function(errorMessage, url, line) {
fireEvent("error", errorMessage, {
url: url,
line: line
});
return true;
};
// example event on the page
fireEvent("ajaxError", "XY page failed to load");
(note: window.onerror is not available in safari)
UPDATE
And here is a proof of concept for a PHP parser:
$i = 1;
$d = file_get_contents("log.txt");
$requests = explode("\n", $d);
foreach ($requests as $req) {
$pos = strpos($req, "tracker.gif");
if ($pos === false) continue;
$start_pos = strpos($req, "?", $pos);
$end_pos = strpos($req, " ", $start_pos); // can also be " HTTP"
$length = $end_pos - $start_pos;
$req = substr($req, $start_pos+1, $length);
$exprs = explode("&", $req);
echo $i . ".<br>"; // request number
$i += 1;
foreach ($exprs as $expr) {
list($name, $value) = explode("=", $expr);
echo $name . " =>" . $value . "<br>"; // key => value
}
}
5 Comments
If you're using jQuery, you can run code during the $.ajaxSuccess event
5 Comments
Use Google Analytics and _trackPageview() as outlined here!
Edit: If that doesn't give you the solution that you are looking for, I think you are looking for a service that doesn't yet exist, in which case, take Jason's $.ajaxSuccess() suggestion and make your own.
1 Comment
This is what I am looking for , Unfortunately, This is not free , But I hope I will find one .
1 Comment
There are plenty of options if you google for "real time analytics". But most of them are paid.
I'd recommend mixpanel and chartbeat.
Comments
If someone is still looking, I've found great pleasure in using Piwik as an open source alternative.
For tracking events there's the good JavaScript client, with some documentation.
For event tracking I'm using this plain function where needed:
_paq.push( [ 'category', 'action', 'name', 'value' ] );
Then you can export all data from the web views of Piwik or directly query the DB for retrieving information, if you are hosting the Piwik on your server.
Comments
Explore related questions
See similar questions with these tags.