2005-09-20 22:48:35 +00:00
< ? php
2008-08-05 22:43:14 +00:00
// This file is part of BOINC.
// http://boinc.berkeley.edu
// Copyright (C) 2008 University of California
//
// BOINC is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// BOINC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
2005-09-20 22:48:35 +00:00
2010-11-04 18:20:57 +00:00
// server_status.php
2005-09-26 18:11:14 +00:00
// (or server_status.php?xml=1)
2005-09-22 22:07:30 +00:00
//
// outputs general information about BOINC server status gathered from
2005-09-26 18:11:14 +00:00
// config.xml or mysql database queries. If you are running all your
// services on one machine, and the database isn't so large, this should
// work right out of the box. Otherwise see configureables below.
2005-09-22 22:07:30 +00:00
//
// Daemons in config.xml are checked to see if they are running by ssh'ing
// into the respective hosts and searching for active pids. Passwordless
2005-09-26 18:11:14 +00:00
// logins must be in effect if there are multiple hosts involved.
2005-09-22 22:07:30 +00:00
//
2005-09-26 18:11:14 +00:00
// The database queries may be very slow. You might consider running these
2005-09-22 22:07:30 +00:00
// queries elsewhere via cronjob, outputing numbers into a readable file,
2005-09-26 18:11:14 +00:00
// and then getting the latest values with a `/bin/tail -1 data_file`.
// See commented example in the code.
//
// You can get an xml version of the stats via the web when the url has the
2010-11-04 18:20:57 +00:00
// optional "?xml=1" tag at the end, i.e
2005-09-26 18:11:14 +00:00
// http://yourboincproject.edu/server_status.php?xml=1
2005-09-22 22:07:30 +00:00
//
// You should edit the following variables in config.xml to suit your needs:
//
// <www_host> hostname of web server (default: same as <host>)
// <sched_host> hostname of scheduling server (default: same as <host>)
// <uldl_host> hostname of upload/download server (default: same as <host>)
// <uldl_pid> pid file of upload/download server httpd.conf
// (default: /etc/httpd/run/httpd.pid)
// <ssh_exe> path to ssh (default: /usr/bin/ssh)
// <ps_exe> path to ps (which supports "w" flag) (default: /bin/ps)
2005-09-22 23:51:52 +00:00
///////////////////////////////////////////////////////////////////////////////
2005-09-20 22:48:35 +00:00
2010-09-17 03:45:39 +00:00
require_once ( " ../inc/util.inc " );
2005-09-22 23:51:52 +00:00
require_once ( " ../inc/xml.inc " );
require_once ( " ../inc/cache.inc " );
2010-09-15 22:06:45 +00:00
require_once ( " ../inc/translation.inc " );
2005-09-20 22:48:35 +00:00
2011-02-09 22:11:34 +00:00
check_get_args ( array ( " xml " ));
2005-09-22 23:51:52 +00:00
$xml = get_int ( " xml " , true );
2005-09-22 22:07:30 +00:00
// daemon status outputs: 1 (running) 0 (not running) or -1 (disabled)
2005-09-22 23:51:52 +00:00
//
2005-09-20 22:48:35 +00:00
function daemon_status ( $host , $pidname , $progname , $disabled ) {
2005-09-22 22:07:30 +00:00
global $ssh_exe , $ps_exe , $project_host ;
2011-01-06 23:09:13 +00:00
$path = " ../../pid_ $host / $pidname " ;
2005-09-20 22:48:35 +00:00
$running = 0 ;
if ( is_file ( $path )) {
$pid = file_get_contents ( $path );
if ( $pid ) {
2007-05-05 03:11:35 +00:00
$pid = trim ( $pid );
2005-10-06 20:22:21 +00:00
$command = " $ps_exe ww $pid " ;
2005-09-22 23:51:52 +00:00
if ( $host != $project_host ) {
$command = " $ssh_exe $host " . $command ;
}
2005-09-22 22:07:30 +00:00
$foo = exec ( $command );
2005-09-20 22:48:35 +00:00
if ( $foo ) {
2007-05-05 03:11:35 +00:00
if ( strstr ( $foo , ( string ) $pid )) $running = 1 ;
2005-09-20 22:48:35 +00:00
}
}
}
2005-09-22 23:51:52 +00:00
if ( $disabled == 1 ) $running = - 1 ;
2005-09-20 22:48:35 +00:00
return $running ;
}
2011-01-06 23:09:13 +00:00
function show_status ( $host , $progname , $running ) {
2010-09-15 22:06:45 +00:00
global $xml ;
2011-01-06 23:09:13 +00:00
$xmlstring = " <daemon> \n <host> $host </host> \n <command> $progname </command> \n " ;
$htmlstring = " <tr><td> $progname </td><td> $host </td> " ;
2005-09-20 22:48:35 +00:00
if ( $running == 1 ) {
2005-09-26 18:11:14 +00:00
$xmlstring .= " <status>running</status> \n " ;
2010-09-15 22:06:45 +00:00
$htmlstring .= " <td class= \" running \" > " . tra ( " Running " ) . " </td> \n " ;
2007-06-13 21:16:27 +00:00
} elseif ( $running == 0 ) {
2005-09-26 18:11:14 +00:00
$xmlstring .= " <status>not running</status> \n " ;
2010-09-15 22:06:45 +00:00
$htmlstring .= " <td class= \" notrunning \" > " . tra ( " Not Running " ) . " </td> \n " ;
2007-06-13 21:16:27 +00:00
} else {
2005-09-26 18:11:14 +00:00
$xmlstring .= " <status>disabled</status> \n " ;
2010-09-15 22:06:45 +00:00
$htmlstring .= " <td class= \" disabled \" > " . tra ( " Disabled " ) . " </td> \n " ;
2007-06-13 21:16:27 +00:00
}
2005-09-26 18:11:14 +00:00
$xmlstring .= " </daemon> \n " ;
$htmlstring .= " </tr> \n " ;
2007-06-13 21:16:27 +00:00
if ( $xml ) {
2010-09-15 22:06:45 +00:00
echo $xmlstring ;
} else {
echo $htmlstring ;
2007-06-13 21:16:27 +00:00
}
2005-09-26 18:11:14 +00:00
return 0 ;
2005-09-20 22:48:35 +00:00
}
function show_daemon_status ( $host , $pidname , $progname , $disabled ) {
$running = daemon_status ( $host , $pidname , $progname , $disabled );
2011-01-06 23:09:13 +00:00
show_status ( $host , $progname , $running );
2005-09-20 22:48:35 +00:00
}
function show_counts ( $key , $xmlkey , $value ) {
2010-09-15 22:06:45 +00:00
global $xml ;
2005-09-20 22:48:35 +00:00
$formattedvalue = number_format ( $value );
2005-09-26 18:11:14 +00:00
$xmlstring = " < $xmlkey > $value </ $xmlkey > \n " ;
2007-06-13 21:16:27 +00:00
if ( $xml ) {
echo $xmlstring ;
2010-09-15 22:06:45 +00:00
} else {
echo " <tr><td> $key </td><td> $formattedvalue </td></tr> " ;
2007-06-13 21:16:27 +00:00
}
2005-09-26 18:11:14 +00:00
return 0 ;
2005-09-20 22:48:35 +00:00
}
2011-03-13 20:05:25 +00:00
function get_mysql_count ( $query ) {
$count = unserialize ( get_cached_data ( 3600 , " get_mysql_count " . $query ));
if ( $count == false ) {
$result = mysql_query ( " select count(*) as count from " . $query );
$count = mysql_fetch_object ( $result );
mysql_free_result ( $result );
$count = $count -> count ;
set_cached_data ( 3600 , serialize ( $count ), " get_mysql_count " . $query );
}
return $count ;
2005-09-20 22:48:35 +00:00
}
2011-03-13 20:05:25 +00:00
function get_mysql_value ( $query ) {
$value = unserialize ( get_cached_data ( 3600 , " get_mysql_value " . $query ));
if ( $value == false ) {
$result = mysql_query ( $query );
$row = mysql_fetch_object ( $result );
mysql_free_result ( $result );
$value = $row -> value ;
set_cached_data ( 3600 , serialize ( $value ), " get_mysql_value " . $query );
}
return $value ;
2010-09-15 22:06:45 +00:00
}
function get_mysql_assoc ( $query ) {
2011-03-13 20:05:25 +00:00
$assoc = unserialize ( get_cached_data ( 3600 , " get_mysql_assoc " . $query ));
if ( $assoc == false ) {
$sql = " SELECT * FROM app WHERE deprecated != 1 " ;
$result = mysql_query ( $sql );
while ( $row = mysql_fetch_assoc ( $result )) {
$assoc [] = $row ;
}
mysql_free_result ( $result );
set_cached_data ( 3600 , serialize ( $assoc ), " get_mysql_assoc " . $query );
2010-09-15 22:06:45 +00:00
}
return $assoc ;
}
2011-03-13 20:05:25 +00:00
function get_mysql_user ( $clause ) {
$count = unserialize ( get_cached_data ( 3600 , " get_mysql_user " . $clause ));
if ( $count == false ) {
$result = mysql_query ( " select count(userid) as userid from (SELECT distinct userid FROM result where validate_state=1 and received_time > (unix_timestamp()-(3600*24*1)) " . $clause . " ) t " );
$count = mysql_fetch_object ( $result );
mysql_free_result ( $result );
$count = $count -> userid ;
set_cached_data ( 3600 , serialize ( $count ), " get_mysql_user " . $clause );
}
return $count ;
2010-09-15 22:06:45 +00:00
}
2011-03-13 20:05:25 +00:00
function get_cpu_time ( $appid ) {
$count = unserialize ( get_cached_data ( 3600 , " get_cpu_time " . $appid ));
if ( $count == false ) {
$result = mysql_query ( "
Select ceil ( avg ( cpu_time ) / 3600 * 100 ) / 100 as cpu_time ,
ceil ( min ( cpu_time ) / 3600 * 100 ) / 100 as min ,
ceil ( max ( cpu_time ) / 3600 * 100 ) / 100 as max
from ( SELECT cpu_time FROM `result` WHERE appid = $appid and validate_state = 1 and received_time > ( unix_timestamp () - ( 3600 * 24 )) ORDER BY `received_time` DESC limit 100 ) t " );
$count = mysql_fetch_object ( $result );
mysql_free_result ( $result );
set_cached_data ( 3600 , serialize ( $count ), " get_cpu_time " . $appid );
}
2010-09-15 22:06:45 +00:00
return $count ;
}
2005-09-22 22:07:30 +00:00
$config_xml = get_config ();
$config_vars = parse_element ( $config_xml , " <config> " );
$project_host = parse_element ( $config_vars , " <host> " );
$www_host = parse_element ( $config_vars , " <www_host> " );
2005-12-18 02:00:15 +00:00
if ( $www_host == " " ) {
$www_host = $project_host ;
}
2005-09-22 22:07:30 +00:00
$sched_host = parse_element ( $config_vars , " <sched_host> " );
2005-12-18 02:00:15 +00:00
if ( $sched_host == " " ) {
$sched_host = $project_host ;
}
2005-09-26 19:56:32 +00:00
$uldl_pid = parse_element ( $config_vars , " <uldl_pid> " );
2005-12-18 02:00:15 +00:00
if ( $uldl_pid == " " ) {
$uldl_pid = " /etc/httpd/run/httpd.pid " ;
}
2005-09-22 22:07:30 +00:00
$uldl_host = parse_element ( $config_vars , " <uldl_host> " );
2005-12-18 02:00:15 +00:00
if ( $uldl_host == " " ) {
$uldl_host = $project_host ;
}
2005-09-22 22:07:30 +00:00
$ssh_exe = parse_element ( $config_vars , " <ssh_exe> " );
2005-12-18 02:00:15 +00:00
if ( $ssh_exe == " " ) {
$ssh_exe = " /usr/bin/ssh " ;
2010-11-04 18:20:57 +00:00
}
2005-09-22 22:07:30 +00:00
$ps_exe = parse_element ( $config_vars , " <ps_exe> " );
2005-12-18 02:00:15 +00:00
if ( $ps_exe == " " ) {
$ps_exe = " /bin/ps " ;
}
2005-09-22 22:07:30 +00:00
2007-05-05 03:11:35 +00:00
$version = null ;
if ( file_exists ( " ../../local.revision " )) {
$version = trim ( file_get_contents ( " ../../local.revision " ));
}
$now = time ();
2005-09-20 22:48:35 +00:00
2007-05-05 03:11:35 +00:00
$xmlstring = " <server_status>
< update_time > $now </ update_time >
" ;
if ( $version ) {
$xmlstring .= " <software_version> $version </software_version> \n " ;
}
$xmlstring .= " <daemon_status> \n " ;
2005-09-22 23:51:52 +00:00
if ( $xml ) {
xml_header ();
2005-09-26 18:11:14 +00:00
echo $xmlstring ;
2005-09-22 23:51:52 +00:00
} else {
2010-09-15 22:28:33 +00:00
page_head ( tra ( " Project status " ));
2007-05-05 03:11:35 +00:00
if ( $version ) {
2010-09-15 22:06:45 +00:00
echo tra ( " Server software version: %1 " , $version ) . " / " ;
2007-05-05 03:11:35 +00:00
}
echo time_str ( time ()), "
2005-09-22 23:51:52 +00:00
< table width = 100 %>
< tr >
< td width = 40 % valign = top >
2010-09-15 22:06:45 +00:00
< h2 > " .tra( " Server status " ). " </ h2 >
2005-09-22 23:51:52 +00:00
< table border = 0 cellpadding = 4 >
2010-09-15 22:06:45 +00:00
< tr >< th > " .tra( " Program " ). " </ th >< th > " .tra( " Host " ). " </ th >< th > " .tra( " Status " ). " </ th ></ tr >
2005-09-22 23:51:52 +00:00
" ;
2005-09-20 22:48:35 +00:00
}
2007-05-05 03:11:35 +00:00
;
// Are the data-driven web sites running? Check for existence of stop_web.
// If it is there, set $web_running to -1 for "disabled",
// otherwise it will be already set to 1 for "enabled."
2005-09-22 22:07:30 +00:00
// Set $www_host to the name of server hosting WWW site.
2005-09-22 23:51:52 +00:00
//
2005-09-20 22:48:35 +00:00
$web_running = ! file_exists ( " ../../stop_web " );
2005-09-22 23:51:52 +00:00
if ( $web_running == 0 ) $web_running = - 1 ;
2010-09-15 22:06:45 +00:00
show_status ( $www_host , tra ( " data-driven web pages " ), $web_running );
2005-09-20 22:48:35 +00:00
2005-09-22 22:07:30 +00:00
// Check for httpd.pid file of upload/download server.
2005-09-22 23:51:52 +00:00
//
2011-01-06 23:09:13 +00:00
$uldl_running = file_exists ( $uldl_pid );
2005-09-22 23:51:52 +00:00
if ( $uldl_running == 0 ) $uldl_running = - 1 ;
2010-09-15 22:06:45 +00:00
show_status ( $uldl_host , tra ( " upload/download server " ), $uldl_running );
2005-09-20 22:48:35 +00:00
2007-06-13 21:16:27 +00:00
$sched_running = ! file_exists ( " ../../stop_sched " );
2010-09-15 22:06:45 +00:00
show_status ( $sched_host , tra ( " scheduler " ), $sched_running );
2005-09-20 22:48:35 +00:00
2005-09-22 22:07:30 +00:00
// parse through config.xml to get all daemons running
2005-09-22 23:51:52 +00:00
//
2005-09-20 22:48:35 +00:00
$cursor = 0 ;
2006-12-17 17:19:29 +00:00
while ( $thisxml = trim ( parse_next_element ( $config_xml , " <daemon> " , $cursor ))) {
2005-09-22 23:51:52 +00:00
$host = parse_element ( $thisxml , " <host> " );
2007-12-24 21:34:21 +00:00
if ( $host == " " ) {
$host = $project_host ;
}
2005-09-22 23:51:52 +00:00
$cmd = parse_element ( $thisxml , " <cmd> " );
2011-01-06 23:09:13 +00:00
list ( $cmd ) = explode ( " " , $cmd );
2005-09-22 23:51:52 +00:00
$log = parse_element ( $thisxml , " <output> " );
2007-12-24 21:34:21 +00:00
if ( ! $log ) {
2011-01-06 23:09:13 +00:00
$log = $cmd . " .log " ;
2007-12-24 21:34:21 +00:00
}
2011-01-06 23:09:13 +00:00
list ( $log ) = explode ( " .log " , $log );
2005-09-22 23:51:52 +00:00
$pid = parse_element ( $thisxml , " <pid_file> " );
2007-12-24 21:34:21 +00:00
if ( ! $pid ) {
2011-01-06 23:09:13 +00:00
$pid = $cmd . " .pid " ;
2007-12-24 21:34:21 +00:00
}
2005-09-22 23:51:52 +00:00
$disabled = parse_element ( $thisxml , " <disabled> " );
2011-01-06 23:09:13 +00:00
// surrogate for command
list ( $c ) = explode ( " . " , $log );
show_daemon_status ( $host , $pid , $c , $disabled );
2005-09-22 22:07:30 +00:00
}
2005-09-20 22:48:35 +00:00
2005-09-26 18:11:14 +00:00
$xmlstring = " </daemon_status> \n <database_file_states> \n " ;
2005-12-18 02:00:15 +00:00
if ( $xml ) {
echo $xmlstring ;
} else {
2005-09-22 23:51:52 +00:00
echo "
2010-09-15 22:06:45 +00:00
< tr >< td align = right >< b > " .tra( " Running : " ). " </ b ></ td >
< td colspan = 2 > " .tra( " Program is operating normally " ). " </ td ></ tr >
< tr >< td align = right >< b > " .tra( " Not Running : " ). " </ b ></ td >
2010-09-15 22:28:33 +00:00
< td colspan = 2 > " .tra( " Program failed or the project is down " ). " </ td ></ tr >
2010-09-15 22:06:45 +00:00
< tr >< td align = right >< b > " .tra( " Disabled : " ). " </ b ></ td >
2010-09-15 22:28:33 +00:00
< td colspan = 2 > " .tra( " Program is disabled " ). " </ td ></ tr >
2005-09-22 23:51:52 +00:00
</ table >
</ td >
2010-09-15 22:06:45 +00:00
< td valign = top >
2010-09-15 22:28:33 +00:00
< h2 > " .tra( " Computing status " ). " </ h2 >
2005-09-22 23:51:52 +00:00
" ;
2005-09-20 22:48:35 +00:00
}
$retval = db_init_aux ();
if ( $retval ) {
2010-09-15 22:06:45 +00:00
echo tra ( " The database server is not accessible " );
2005-09-20 22:48:35 +00:00
} else {
2005-09-22 23:51:52 +00:00
if ( ! $xml ) {
2010-09-15 22:06:45 +00:00
echo " <table border=0 cellpadding=0 cellspacing=0><tr><td>
2005-09-22 23:51:52 +00:00
< table border = 0 cellpadding = 4 >
2010-09-15 22:28:33 +00:00
< tr >< th > " .tra( " Work " ). " </ th >< th > #</th></tr>
2005-09-22 23:51:52 +00:00
" ;
}
2005-09-20 22:48:35 +00:00
2005-09-26 18:11:14 +00:00
// If you are reading these values from a file rather than
// making live queries to the database, do something like this:
//
// $sendfile = "/home/boincadm/server_status_data/count_results_unsent.out";
// $n = `/bin/tail -1 $sendfile`;
2010-03-05 21:13:53 +00:00
// show_counts("Tasks ready to send","results_ready_to_send",$n);
2005-09-26 18:11:14 +00:00
2005-12-18 02:00:15 +00:00
show_counts (
2010-09-15 22:06:45 +00:00
tra ( " Tasks ready to send " ),
2005-12-18 02:00:15 +00:00
" results_ready_to_send " ,
get_mysql_count ( " result where server_state = 2 " )
);
show_counts (
2010-09-15 22:06:45 +00:00
tra ( " Tasks in progress " ),
2005-12-18 02:00:15 +00:00
" results_in_progress " ,
get_mysql_count ( " result where server_state = 4 " )
);
show_counts (
2010-09-15 22:06:45 +00:00
tra ( " Workunits waiting for validation " ),
2005-12-18 02:00:15 +00:00
" workunits_waiting_for_validation " ,
get_mysql_count ( " workunit where need_validate=1 " )
);
show_counts (
2010-09-15 22:06:45 +00:00
tra ( " Workunits waiting for assimilation " ),
2005-12-18 02:00:15 +00:00
" workunits_waiting_for_assimilation " ,
get_mysql_count ( " workunit where assimilate_state=1 " )
);
show_counts (
2010-09-15 22:06:45 +00:00
tra ( " Workunits waiting for file deletion " ),
2005-12-18 02:00:15 +00:00
" workunits_waiting_for_deletion " ,
get_mysql_count ( " workunit where file_delete_state=1 " )
);
show_counts (
2010-09-15 22:06:45 +00:00
tra ( " Tasks waiting for file deletion " ),
2005-12-18 02:00:15 +00:00
" results_waiting_for_deletion " ,
get_mysql_count ( " result where file_delete_state=1 " )
);
2005-09-20 22:48:35 +00:00
2011-03-13 20:05:25 +00:00
$gap = unserialize ( get_cached_data ( 3600 , " transitioner_backlog " ));
if ( $gap === false ) {
$result = mysql_query ( " select MIN(transition_time) as min from workunit " );
$min = mysql_fetch_object ( $result );
mysql_free_result ( $result );
$gap = ( time () - $min -> min ) / 3600 ;
if (( $gap < 0 ) || ( $min -> min == 0 )) {
$gap = 0 ;
}
set_cached_data ( 3600 , serialize ( $gap ), " transitioner_backlog " );
2005-12-18 02:00:15 +00:00
}
show_counts (
2010-09-15 22:06:45 +00:00
tra ( " Transitioner backlog (hours) " ),
2005-12-18 02:00:15 +00:00
" transitioner_backlog_hours " ,
$gap
);
2005-09-22 23:51:52 +00:00
if ( ! $xml ) {
2010-09-15 22:06:45 +00:00
echo " </table></td><td> " ;
2010-11-04 18:20:57 +00:00
echo " <table> " ;
echo " <tr><th> " . tra ( " Users " ) . " </th><th>#</th></tr> " ;
show_counts (
tra ( " with recent credit " ),
" users_with_recent_credit " ,
get_mysql_count ( " user where expavg_credit>1 " )
);
show_counts (
tra ( " with credit " ),
" users_with_credit " ,
get_mysql_count ( " user where total_credit>0 " )
);
show_counts (
tra ( " registered in past 24 hours " ),
" users_registered_in_past_24_hours " ,
get_mysql_count ( " user where create_time > (unix_timestamp() - (24*3600)) " )
);
echo " <tr><th> " . tra ( " Computers " ) . " </th><th>#</th></tr> " ;
show_counts (
tra ( " with recent credit " ),
" hosts_with_recent_credit " ,
get_mysql_count ( " host where expavg_credit>1 " )
);
show_counts (
tra ( " with credit " ),
" hosts_with_credit " ,
get_mysql_count ( " host where total_credit>0 " )
);
show_counts (
tra ( " registered in past 24 hours " ),
" hosts_registered_in_past_24_hours " ,
get_mysql_count ( " host where create_time > (unix_timestamp() - (24*3600)) " )
);
// 200 cobblestones = 1 GigaFLOPS
show_counts (
tra ( " current GigaFLOPs " ),
" current_floating_point_speed " ,
get_mysql_value ( " SELECT sum(expavg_credit)/200 as value FROM user " )
);
end_table ();
echo " </td></tr></table> " ;
2010-09-15 22:06:45 +00:00
2010-11-04 18:20:57 +00:00
start_table ();
echo " <tr><th colspan=5> " . tra ( " Tasks by application " ) . " </th></tr> " ;
row_heading_array (
array (
tra ( " application " ),
tra ( " unsent " ),
tra ( " in progress " ),
tra ( " avg runtime of last 100 results in h (min-max) " ),
tra ( " users in last 24h " )
)
);
$apps = get_mysql_assoc ( " SELECT * FROM app WHERE deprecated != 1 " );
foreach ( $apps as $app ) {
$appid = $app [ " id " ];
$uf_name = $app [ " user_friendly_name " ];
echo " <tr><td> $uf_name </td>
< td > " . number_format(get_mysql_count( " result where server_state = 2 and appid = $appid " )) . " </ td >
< td > " . number_format(get_mysql_count( " result where server_state = 4 and appid = $appid " )) . " </ td >
< td > "
;
$count = get_cpu_time ( $appid );
echo number_format ( $count -> cpu_time , 2 ) . " ( " . number_format ( $count -> min , 2 ) . " - " . number_format ( $count -> max , 2 ) . " ) " ;
echo " </td>
< td > " . number_format(get_mysql_user( " and appid = $appid " )) . " </ td >
</ tr > "
;
}
end_table ();
2010-09-15 22:06:45 +00:00
2005-09-22 23:51:52 +00:00
}
2005-09-20 22:48:35 +00:00
}
2005-09-26 18:11:14 +00:00
$xmlstring = " </database_file_states> \n </server_status> \n " ;
2005-12-18 02:00:15 +00:00
if ( $xml ) {
echo $xmlstring ;
} else {
2005-09-22 23:51:52 +00:00
echo "
2007-05-05 03:11:35 +00:00
</ td >
</ tr >
</ table >
2005-09-22 23:51:52 +00:00
" ;
page_tail ();
2005-09-20 22:48:35 +00:00
}
?>