Ruwiki pgcounter

From Meta, a Wikimedia project coordination wiki
Jump to navigation Jump to search

There was a special counter for Wikimedia projects which was first installed on Russian Wikipedia (and supported by majority of users there). It tracked hits to pages (this feature exists in MediaWiki but is disabled for Wikipedia due to high servers load). Also, referrers were logged (useful tool to know where new users come from; or to detect anti-Wikipedia flashmobs).

The main counter daemon was on Toolserver (zedler) under account of User:Edward Chernenko (edwardspec). It used u_edwardspec.pub_<LANG>wiki_pgcounter table to log visits (another Toolserver users may read this table from their scripts).

The counter was installed on: Russian Wikipedia, Tamil Wikipedia, Kannada Wikipedia.

I'm sysop; how to install on my wiki?[edit]

First you should think about popularity of your wiki. Wikipedias are placed on mighty servers but zedler is server only for some developers. It should not be overloaded. So, this counter currently can handle three types of wikis:

Small wiki[edit]

That means there're less then 1 hit to page in your wiki per second. Such a wikis can use exact hit counter which counts each hit. The code to enable counter is

 var disable_counter = 0;
 function count_me()
 {
   if(!disable_counter && window.location.href.match("^http://<LANG>.wikipedia.org/wiki/") && !window.location.href.substring(7).match(":"))
   {
     var img = new Image();
     img.src = "http://tools.wikimedia.de:22902/1" + document.referrer;
   }
 }
 addLoadEvent(count_me);

Medium wiki[edit]

This is wiki with less then 500 hits to pages per second. That's too high load so JS code marks only one hit of ten (selected randomly). The code is

 var disable_counter = 0;
 function count_me()
 {
   if(disable_counter != 1 && window.location.href.match("^http://ru.wikipedia.org/wiki/") && !window.location.href.substring(7).match(":"))
   {
     var rnd = Math.random() > 0.1 ? 1 : 0;
     if(rnd == 0 || (document.referrer && !document.referrer.match("(wikipedia.org|wiktionary.org|wikiquote.org|wikisource.org|wikimedia.org|yandex.ru|google.ru|google.com)")))
     {
       var img = new Image();
       img.src = "http://tools.wikimedia.de:22902/" + (rnd == 0 ? "1" : "0") + document.referrer;
     }
   }
 }
 addLoadEvent(count_me);

Big wiki[edit]

This is for huge wikis only like enwiki (only 1 hit of 500 should result in hit to counter). Replace

var rnd = Math.random() > 0.002 ? 1 : 0;

line in code for medium wikis with

var rnd = Math.random() > 0.002 ? 1 : 0;

Do not overload server[edit]

Adding code for small wiki into English Wikipedia global Monobook.js will be considered as DDOS attack. Please do not do so ;)

Where to include code[edit]

Insert it into MediaWiki:Monobook.js of your wiki. Note that you may require also add addLoadEvent() function to the beginning of this file if it not exists there. Code is below.

function addLoadEvent(func) 
{
  if (window.addEventListener) 
    window.addEventListener("load", func, false);
  else if (window.attachEvent) 
    window.attachEvent("onload", func);
}

How to request to enable your new counter[edit]

After adding this code you should write to Edward's user talk a request with your language code and wiki type (small/medium/big) and wait at least 2 days (to ensure that browser caches are refreshed anywhere). You will be notified in your wiki when counter will be on.

Privacy[edit]

Any registered user may disable this counter by typing

disable_counter = 1

into their monobook.js.

This option is a condition for consensus on ruwiki but if your users allow it you may remove

if(disable_counter != 1)

braces from global code.

Anyway this counter gathers no personal information except referrers. As referrers logging with full timestamps may not be allowed by Privacy policy, only date is logged.

Tools[edit]

TOP100 page 
http://tools.wikimedia.de/~edwardspec/cgi-bin/top100.cgi
Referrers log 
http://tools.wikimedia.de/~edwardspec/cgi-bin/reflog.cgi

Please append '?uselang=<LANG>" to tool URL in order to get stats for another wiki ('ru' is default value).

Code[edit]

The counter daemon code is free and distributed under GPL license v.2 or greater. See current code here: http://tools.wikimedia.de/~edwardspec/src/wikicnt_daemon.pl (Perl).

Current successors[edit]