Changeset 192 for trunk


Ignore:
Timestamp:
03/05/2009 12:45:36 AM (3 years ago)
Author:
cirrus
Message:

Added cache file for statistics (by winner).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/main_menu.php

    r187 r192  
    3030                return $form_login; 
    3131        } 
    32  
     32         
     33        function calculate_menu_stats() { 
     34                global $db, $config; 
     35                $stats_tmp = "/tmp/wind-stats-".md5(__FILE__).".tmp"; 
     36                if (file_exists($stats_tmp)) { 
     37                        $stats = unserialize(file_get_contents($stats_tmp)); 
     38                        if ($stats['last_calc'] + 3600 > time()) { 
     39                                unset($stats['last_calc']); 
     40                                $this->tpl = array_merge($this->tpl, $stats); 
     41                                return; 
     42                        } 
     43                } 
     44                $stats['stats_nodes_active'] = 
     45                                $db->cnt('', 
     46                                                'nodes ' . 
     47                                                'INNER JOIN links AS l1 ON l1.node_id = nodes.id ' . 
     48                                                'LEFT JOIN links AS p2p ON (l1.type = "p2p" AND p2p.type = "p2p" AND l1.node_id = p2p.peer_node_id AND p2p.node_id = l1.peer_node_id) ' . 
     49                                                'LEFT JOIN links AS clients ON (l1.type = "client" AND l1.peer_ap_id = clients.id) ' . 
     50                                                'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
     51                                                'LEFT JOIN users ON users.id = users_nodes.user_id', 
     52                                                'users.status = "activated" AND l1.status = "active" AND (p2p.status = "active" OR clients.status = "active")', 
     53                                                'nodes.id' 
     54                                                ); 
     55                $stats['stats_nodes_total'] = 
     56                                $db->cnt('', 
     57                                                'nodes ' . 
     58                                                'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
     59                                                'LEFT JOIN users ON users.id = users_nodes.user_id', 
     60                                                'users.status = "activated"', 
     61                                                'nodes.id' 
     62                                                ); 
     63                $stats['stats_backbone'] = 
     64                                $db->cnt('', 
     65                                                'nodes ' . 
     66                                                'INNER JOIN links AS l1 ON l1.node_id = nodes.id ' . 
     67                                                'INNER JOIN links AS l2 ON (l1.type = "p2p" AND l2.type = "p2p" AND l1.node_id = l2.peer_node_id AND l2.node_id = l1.peer_node_id) ' . 
     68                                                'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
     69                                                'LEFT JOIN users ON users.id = users_nodes.user_id', 
     70                                                'users.status = "activated" AND l1.status = "active" AND l2.status = "active"', 
     71                                                'nodes.id' 
     72                                                ); 
     73                $stats['stats_links'] = 
     74                                $db->cnt('', 
     75                                                'nodes ' . 
     76                                                'INNER JOIN links AS l1 ON l1.node_id = nodes.id ' . 
     77                                                'LEFT JOIN links AS p2p ON (l1.id < p2p.id AND l1.type = "p2p" AND p2p.type = "p2p" AND l1.node_id = p2p.peer_node_id AND p2p.node_id = l1.peer_node_id) ' . 
     78                                                'LEFT JOIN links AS clients ON (l1.type = "client" AND l1.peer_ap_id = clients.id) ' . 
     79                                                'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
     80                                                'LEFT JOIN users ON users.id = users_nodes.user_id', 
     81                                                'users.status = "activated" AND l1.status = "active" AND (p2p.status = "active" OR clients.status = "active")', 
     82                                                'l1.id' 
     83                                                ); 
     84                $stats['stats_aps'] = 
     85                                $db->cnt('', 
     86                                                'nodes ' . 
     87                                                'INNER JOIN links ON links.node_id = nodes.id AND links.type = "ap" AND links.status = "active" ' . 
     88                                                'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
     89                                                'LEFT JOIN users ON users.id = users_nodes.user_id', 
     90                                                'users.status = "activated"', 
     91                                                'links.id' 
     92                                                ); 
     93                $stats['stats_services_active'] = 
     94                                $db->cnt('', 
     95                                                'nodes_services', 
     96                                                'nodes_services.status = "active"' 
     97                                                ); 
     98                $stats['stats_services_total'] = 
     99                                $db->cnt('', 
     100                                                'nodes_services', 
     101                                                '' 
     102                                                ); 
     103                $this->tpl = array_merge($this->tpl, $stats); 
     104                $stats['last_calc'] = time(); 
     105                if (is_writable($stats_tmp) || !file_exists($stats_tmp)) { 
     106                        $h = @fopen($stats_tmp, "w"); 
     107                        @fwrite($h, serialize($stats)); 
     108                        @fclose($h); 
     109                } 
     110        } 
     111         
    33112        function output() { 
    34113                if ($this->hide) return; 
     
    99178                $this->tpl['link_logout'] = makelink(array("page" => "users", "action" => "logout")); 
    100179                parse_str(substr(makelink(array("page" => "search"), FALSE, TRUE, FALSE), 1), $this->tpl['query_string']); 
    101                 $this->tpl['stats_nodes_active'] = 
    102                                 $db->cnt('', 
    103                                                 'nodes ' . 
    104                                                 'INNER JOIN links AS l1 ON l1.node_id = nodes.id ' . 
    105                                                 'LEFT JOIN links AS p2p ON (l1.type = "p2p" AND p2p.type = "p2p" AND l1.node_id = p2p.peer_node_id AND p2p.node_id = l1.peer_node_id) ' . 
    106                                                 'LEFT JOIN links AS clients ON (l1.type = "client" AND l1.peer_ap_id = clients.id) ' . 
    107                                                 'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
    108                                                 'LEFT JOIN users ON users.id = users_nodes.user_id', 
    109                                                 'users.status = "activated" AND l1.status = "active" AND (p2p.status = "active" OR clients.status = "active")', 
    110                                                 'nodes.id' 
    111                                                 ); 
    112                 $this->tpl['stats_nodes_total'] = 
    113                                 $db->cnt('', 
    114                                                 'nodes ' . 
    115                                                 'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
    116                                                 'LEFT JOIN users ON users.id = users_nodes.user_id', 
    117                                                 'users.status = "activated"', 
    118                                                 'nodes.id' 
    119                                                 ); 
    120                 $this->tpl['stats_backbone'] = 
    121                                 $db->cnt('', 
    122                                                 'nodes ' . 
    123                                                 'INNER JOIN links AS l1 ON l1.node_id = nodes.id ' . 
    124                                                 'INNER JOIN links AS l2 ON (l1.type = "p2p" AND l2.type = "p2p" AND l1.node_id = l2.peer_node_id AND l2.node_id = l1.peer_node_id) ' . 
    125                                                 'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
    126                                                 'LEFT JOIN users ON users.id = users_nodes.user_id', 
    127                                                 'users.status = "activated" AND l1.status = "active" AND l2.status = "active"', 
    128                                                 'nodes.id' 
    129                                                 ); 
    130                 $this->tpl['stats_links'] = 
    131                                 $db->cnt('', 
    132                                                 'nodes ' . 
    133                                                 'INNER JOIN links AS l1 ON l1.node_id = nodes.id ' . 
    134                                                 'LEFT JOIN links AS p2p ON (l1.id < p2p.id AND l1.type = "p2p" AND p2p.type = "p2p" AND l1.node_id = p2p.peer_node_id AND p2p.node_id = l1.peer_node_id) ' . 
    135                                                 'LEFT JOIN links AS clients ON (l1.type = "client" AND l1.peer_ap_id = clients.id) ' . 
    136                                                 'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
    137                                                 'LEFT JOIN users ON users.id = users_nodes.user_id', 
    138                                                 'users.status = "activated" AND l1.status = "active" AND (p2p.status = "active" OR clients.status = "active")', 
    139                                                 'l1.id' 
    140                                                 ); 
    141                 $this->tpl['stats_aps'] = 
    142                                 $db->cnt('', 
    143                                                 'nodes ' . 
    144                                                 'INNER JOIN links ON links.node_id = nodes.id AND links.type = "ap" AND links.status = "active" ' . 
    145                                                 'INNER JOIN users_nodes ON nodes.id = users_nodes.node_id ' . 
    146                                                 'LEFT JOIN users ON users.id = users_nodes.user_id', 
    147                                                 'users.status = "activated"', 
    148                                                 'links.id' 
    149                                                 ); 
    150                 $this->tpl['stats_services_active'] = 
    151                                 $db->cnt('', 
    152                                                 'nodes_services', 
    153                                                 'nodes_services.status = "active"' 
    154                                                 ); 
    155                 $this->tpl['stats_services_total'] = 
    156                                 $db->cnt('', 
    157                                                 'nodes_services', 
    158                                                 '' 
    159                                                 ); 
     180                $this->calculate_menu_stats(); 
    160181                $main->html->head->add_script("text/javascript", makelink(array("page" => "search", "subpage" => "suggest_js"))); 
    161182                return template($this->tpl, __FILE__); 
Note: See TracChangeset for help on using the changeset viewer.