source: subversion/sites/other/tiles/Stats/index.php @ 3986

Last change on this file since 3986 was 1815, checked in by ojw, 13 years ago

Tiles statistics page

File size: 3.0 KB
Line 
1<html><head>
2<title>Tiles@home stats</title>
3<link rel="stylesheet" href="../styles.css">
4</head>
5<body>
6<h1>Tiles@home stats</h1>
7<div id="main">
8<?php
9
10$Filename = "stats.htm";
11DoCached($Filename, $_GET["killcache"] == "883");
12readfile($Filename);
13
14function DoCached($Filename, $KillCache){
15
16        $Age = time() - filemtime($Filename);
17        if($Age < 12 * 86400 && !$KillCache){
18                printf("<p><i>Cached, age %d sec</i></p>\n", $Age);
19                return; 
20        }
21       
22        print "<p>Regenerating stats, this will take a while...</p>\n";
23        flush();
24       
25        ob_start();
26        include("../connect/connect.php");
27        TileStats();
28        InterestingTiles();
29        PeopleStats();
30        $Data = ob_get_contents();
31        ob_end_clean();
32       
33       
34        $fp = fopen($Filename, "w");
35        if($fp){
36                fputs($fp, $Data);
37                fclose($fp);
38        }
39        else
40        {
41                print "<p>error writing to cache file</p>\n";
42        }
43}
44
45function PeopleStats(){
46  $SQL = "SELECT user, count(*) as count FROM tiles WHERE `exists`=1 GROUP BY user ORDER BY count desc;";
47 
48  $Result = mysql_query($SQL);
49  if(mysql_error()){
50    printf("<p>%s</p>\n", htmlentities(mysql_error()));
51    return;
52    }
53   
54  print "<h2>Uploaders</h2>\n";
55  if(mysql_num_rows($Result) < 1)
56    {
57    print "<p>None</p>\n";
58    return;
59    }
60   
61  print "<table border=\"1\" cellpadding=\"5\">";
62  $Count = 1;
63  while($Data = mysql_fetch_assoc($Result)){
64   
65    printf("<tr><td>%d</td><td>%s</td><td>%d tiles</td></tr>", 
66      $Count++,
67      $Data["user"],
68      $Data["count"]);
69  }
70  print "</table>\n";
71
72}
73function TileStats(){
74  $SQL = "SELECT z, count(*) as count FROM tiles WHERE `exists`=1 GROUP BY z ORDER BY z;";
75 
76  $Result = mysql_query($SQL);
77  if(mysql_error()){
78    printf("<p>%s</p>\n", htmlentities(mysql_error()));
79    return;
80    }
81   
82  print "<h2>Tiles available</h2>\n";
83  if(mysql_num_rows($Result) < 1)
84    {
85    print "<p>None</p>\n";
86    return;
87    }
88   
89  print "<table border=\"1\" cellpadding=\"5\">\n";
90  while($Data = mysql_fetch_assoc($Result)){
91          $Z = $Data["z"];
92          if($Z > 0 && $Z < 20){
93                 
94      $MaxTiles = pow(4, $Z);
95      if($MaxTiles>0)
96              $PercentDone = 100 * $Data["count"] / $MaxTiles;
97          else
98                  $PercentDone = 0;
99       
100            printf("<tr><td>Zoom-%d:</td><td>%d tiles</td><td>%1.3f%%</td></tr>\n", 
101              $Z,
102              $Data["count"], 
103                $PercentDone);
104         }
105  }
106  print "</table>\n";
107}
108
109function InterestingTiles(){
110  print "<h2>Interesting tilesets</h2>\n";
111  $SQL = "select `x`,`y`,`z`,`size` from `tiles` where `exists`=1 and `z`=12 and `size`>50000 order by `size` desc limit 30;";
112  $Results = mysql_query($SQL);
113  if(mysql_num_rows($Results)){
114  print "<table border=\"1\" cellpadding=\"5\">";
115    while($Data = mysql_fetch_assoc($Results)){
116      $Link = sprintf("../Browse/?x=%d&amp;y=%d&amp;z=%d",
117        $Data["x"],
118        $Data["y"],
119        $Data["z"]);
120
121      printf("<tr><td><a href=\"%s\">%d,%d,%d</a></td><td>%1.1fK</td></tr>\n", 
122        $Link,
123        $Data["x"],
124        $Data["y"],
125        $Data["z"],
126        $Data["size"] / 1024);
127    }
128  print "</table>\n";
129  }
130
131}
132
133?></div>
134</body>
135</html>
136       
Note: See TracBrowser for help on using the repository browser.