uplink = $uplink; if(!file_exists("db/network.rrd")) { $fname = "db/network.rrd"; $opts = array( "--step", "300", "--start", "0", "DS:users:GAUGE:600:0:U", "DS:channels:GAUGE:600:0:U", "DS:opers:GAUGE:600:0:U", "DS:servers:GAUGE:600:0:U", "RRA:AVERAGE:0.5:1:600", "RRA:AVERAGE:0.5:6:700", "RRA:AVERAGE:0.5:24:775", "RRA:AVERAGE:0.5:288:797", "RRA:MAX:0.5:1:600", "RRA:MAX:0.5:6:700", "RRA:MAX:0.5:24:775", "RRA:MAX:0.5:288:797" ); $ret = rrd_create($fname, $opts, count($opts)); if(!$ret) { $err = rrd_error(); echo "Create error: $err\n"; die(); } } if(!file_exists("db/network-away.rrd")) { $fname = "db/network-away.rrd"; $opts = array( "--step", "300", "--start", "0", "DS:useraway:GAUGE:600:0:U", "DS:userhere:GAUGE:600:0:U", "RRA:AVERAGE:0.5:1:600", "RRA:AVERAGE:0.5:6:700", "RRA:AVERAGE:0.5:24:775", "RRA:AVERAGE:0.5:288:797", "RRA:MAX:0.5:1:600", "RRA:MAX:0.5:6:700", "RRA:MAX:0.5:24:775", "RRA:MAX:0.5:288:797" ); $ret = rrd_create($fname, $opts, count($opts)); if(!$ret) { $err = rrd_error(); echo "Create error: $err\n"; die(); } } $this->timer = timer(5,array(&$this,"create_stats"),array()); } public function unload($rehash = false) { kill_timer($this->timer); } function create_stats() { $this->timer = timer(5*60,array(&$this,"create_stats"),array()); $stats = array( "opers" => 0, "total" => 0, "away" => 0, "here" => 0 ); foreach(P10_User::getAllUsers() as $num => $user) { $stats['total']++; if($user->isAway()) $stats['away']++; else $stats['here']++; if($user->getModes()->hasMode('o')) $stats['opers']++; } $channels = P10_Channel::getChannelCount(); $servers = P10_Server::getServerCount(); rrd_update("db/network.rrd", time().":".$stats['total'].":".$channels.":".$stats['opers'].":".$servers); rrd_update("db/network-away.rrd", time().":".$stats['away'].":".$stats['here']); foreach(uplink::$uplink->servers as $snum => $server) { $count = $server->getUserCount(); $fname="db/".$server->getName().".rrd"; if(!file_exists($fname)) { $opts = array( "--step", "300", "--start", "0", "DS:users:GAUGE:600:0:U", "RRA:AVERAGE:0.5:1:600", "RRA:AVERAGE:0.5:6:700", "RRA:AVERAGE:0.5:24:775", "RRA:AVERAGE:0.5:288:797", "RRA:MAX:0.5:1:600", "RRA:MAX:0.5:6:700", "RRA:MAX:0.5:24:775", "RRA:MAX:0.5:288:797" ); $ret = rrd_create($fname, $opts, count($opts)); } rrd_update($fname, time().":".$count); } } } ?>