×
Create a new article
Write your page title here:
We currently have 3,189 articles on s23. Type your article name above or create one of the articles listed here!



    s23
    3,189Articles
    Revision as of 10:31, 5 March 2006 by imported>mutante (→‎Table structures)

    How To Generate Automatic Wiki Statistics

    Create Database

    Table structures

    --> Wikistats/Table structures

    Fill it initally

    --> Wikistats/Wikipedia Languages

    Keep it updated

    script

    to be called from the commandline like

    php update_wikipedias.php 
    
    <?php
    # Wikistats by mutante - 2006-02-08 - S23 Wiki - http://s23.org
    #
    
    # set user agent
    ini_set('user_agent','http://s23.org/wikistats/ | http://meta.wikimedia.org/wiki/User:mutante | mutante@s23.org');
    
    # include config
    require_once("config.php");
    
    # connect db
    mysql_connect("$dbhost", "$dbname", "$dbpass") or die(mysql_error());
    echo "Wikistats Updater by S23-mutante \n Connected to MySQL. \n";
    
    # select db
    mysql_select_db("wikistats") or die(mysql_error());
    echo "Selected database 'wikistats' \n.";
    
    # select all ordered by good
    $query = "select * from wikipedias order by good asc";
    $result = mysql_query("$query") or die(mysql_error());
    echo "Sent query: '$query'.\n";
    
    # main loop
    while($row = mysql_fetch_array( $result )) {
    if ($row['prefix']!="") {
    $url="http://".$row['prefix'].".wikipedia.org/wiki/Special:Statistics?action=raw";
    $remotefile=fopen("$url","r");
    
    if (!$remotefile) {
        echo "Unable to open remote file $url \n";
        fclose ($remotefile);
    } else {
    echo "Ok opening $url \n";
    $buffer = fgets($remotefile);
    echo "Buffer: $buffer";
    $pieces = explode(";",$buffer);
    $total = explode("=",$pieces[0]);
    $total = $total[1];
    $good = explode("=",$pieces[1]);
    $good = $good[1];
    
    # bug protection
    if ($good>2147483647) {
    $good=0;
    }
    
    $views = explode("=",$pieces[2]);
    $views = $views[1];
    $edits = explode("=",$pieces[3]);
    $edits = $edits[1];
    $users = explode("=",$pieces[4]);
    $users = $users[1];
    $admins = explode("=",$pieces[5]);
    $admins = $admins[1];
    $admins = trim($admins);
    echo "Total: $total Good: $good Views: $views Edits: $edits Users: $users Admins: $admins \n";
    $query2="update wikipedias set total=\"$total\",good=\"$good\",views=\"$views\",edits=\"$edits\",users=\"$users\",admins=\"$admins\",ts=NOW() where id=\"".$row['id']."\";";
    echo "Query: $query2 \n";
    $result2 = mysql_query("$query2") or die(mysql_error());
    echo "Updated MySQL. Return Code: $result2 \n \n";
    fclose ($remotefile);
    }
    }
    }
    mysql_close();
    echo "Done. Fnord.";
    ?>
    

    cronjob

    Every 4 hours:

    crontab -l
    # m h  dom mon dow   command
    00 */4 * * * /usr/local/sbin/update_all.sh
    

    which calls (among others)

    php /var/www/wikistats/update_wikis.php
    

    Display results

    html

    wiki

    Wikipedias

    <?php
    # Wikistats by mutante - 2006-02 - S23 Wiki - http://s23.org
    #
    require_once("config.php");
    
    mysql_connect("$dbhost", "$dbname", "$dbpass") or die(mysql_error());
    # echo "Connected to MySQL.<br />";
    
    mysql_select_db("wikistats") or die(mysql_error());
    # echo "Selected database 'wikistats'.<br />";
    
    $query = "select * from wikipedias order by good desc,total desc,edits desc";
    
    $result = mysql_query("$query") or die(mysql_error());
    # echo "Sent query: '$query'.<br /><br />";
    ?>
    
    <pre>
    <?php
    $count=1;
    while($row = mysql_fetch_array( $result )) {
    if ($row['prefix']!="") {
    ?>
    |-
    | style="text-align: right;" | <?php echo $count; ?>
    
    | style="text-align: right;  | <?php echo "[[w:".$row['lang']." language|".$row['lang']."]]"; ?>
    | style="text-align: right;  | <?php echo "[[w:".$row['lang']." language|".$row['loclang']."]]"; ?>
    
    | style="text-align: right;  | <?php echo "[[:".$row['prefix'].":|".$row['prefix']."]]"; ?>
    
    | style="text-align: right;" | <?php echo "[http://".$row['prefix'].".wikipedia.org/wiki/Special:Statistics?action=raw '''".$row['good']; ?>''']
    | style="text-align: right;" | <?php echo $row['total']; ?>
    
    | style="text-align: right;" | <?php echo "[http://".$row['prefix'].".wikipedia.org/wiki/Special:Recentchanges ".$row['edits']; ?>]
    | style="text-align: right;" | <?php echo "[http://".$row['prefix'].".wikipedia.org/wiki/Special:Listadmins ".$row['admins']; ?>]
    | style="text-align: right;" | <?php echo "[http://".$row['prefix'].".wikipedia.org/wiki/Special:Listusers ".$row['users']; ?>]
    <?php
    } else {
    if ($count>1) {
    echo "|} \n";
    }
    ?>
    === <?php echo $row['lang']; ?> ===
    {| border="1" cellpadding="2" cellspacing="0" style="width:75%; background: #f9f9f9; border: 1px solid #aaaaaa; border-collapse: collapse; white-space: nowrap; text-align: left"
    |-
    ! No.
    ! Language
    ! Language (local)
    ! Wiki
    ! Articles
    ! Total
    ! Edits
    ! Admins
    ! Users
    <?php
    }
    if ($row['prefix']!="") {
    $count++;
    }
    }
    mysql_close();
    ?>
    |}</pre>
    

    csv/ssv

    Cookies help us deliver our services. By using our services, you agree to our use of cookies.
    Cookies help us deliver our services. By using our services, you agree to our use of cookies.