", r);
else
ap_rputs("Scoreboard: ", r);
written = 0;
for (i = 0; i < server_limit; ++i) {
for (j = 0; j < thread_limit; ++j) {
int indx = (i * thread_limit) + j;
if (stat_buffer[indx] != status_flags[SERVER_DISABLED]) {
ap_rputc(stat_buffer[indx], r);
if ((written % STATUS_MAXLINE == (STATUS_MAXLINE - 1))
&& !short_report)
ap_rputs("\n", r);
written++;
}
}
}
if (short_report)
ap_rputs("\n", r);
else {
ap_rputs("\n"
"Scoreboard Key:
\n"
"\"_\" Waiting for Connection, \n"
"\"S\" Starting up, \n"
"\"R\" Reading Request,
\n"
"\"W\" Sending Reply, \n"
"\"K\" Keepalive (read), \n"
"\"D\" DNS Lookup,
\n"
"\"C\" Closing connection, \n"
"\"L\" Logging, \n"
"\"G\" Gracefully finishing,
\n"
"\"I\" Idle cleanup of worker, \n"
"\".\" Open slot with no current process,
\n"
"
\n", r);
for (i = 0; i < server_limit; ++i) {
for (j = 0; j < thread_limit; ++j) {
int indx = (i * thread_limit) + j;
if (stat_buffer[indx] != '.') {
ap_rprintf(r, " %" APR_PID_T_FMT
" in state: %c ", pid_buffer[i],
stat_buffer[indx]);
if (++k >= 3) {
ap_rputs("\n", r);
k = 0;
} else
ap_rputs(",", r);
}
}
}
ap_rputs("\n"
"\n", r);
}
}
if (ap_extended_status && !short_report) {
if (no_table_report)
ap_rputs("| Srv | PID | Acc | " "M | " #ifdef HAVE_TIMES "CPU\n | " #endif "SS | Req | " "Conn | Child | Slot | " "Client | VHost | " "Request | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| %d-%d | - | %d/%lu/%lu", i, (int)worker_generation, (int)conn_lres, my_lres, lres); else ap_rprintf(r, " | |||||||||||||||||||||
| %d-%d | %" APR_PID_T_FMT " | %d/%lu/%lu", i, (int)worker_generation, worker_pid, (int)conn_lres, my_lres, lres); switch (ws_record->status) { case SERVER_READY: ap_rputs(" | _", r); break; case SERVER_STARTING: ap_rputs(" | S", r); break; case SERVER_BUSY_READ: ap_rputs(" | R", r); break; case SERVER_BUSY_WRITE: ap_rputs(" | W", r); break; case SERVER_BUSY_KEEPALIVE: ap_rputs(" | K", r); break; case SERVER_BUSY_LOG: ap_rputs(" | L", r); break; case SERVER_BUSY_DNS: ap_rputs(" | D", r); break; case SERVER_CLOSING: ap_rputs(" | C", r); break; case SERVER_DEAD: ap_rputs(" | .", r); break; case SERVER_GRACEFUL: ap_rputs(" | G", r); break; case SERVER_IDLE_KILL: ap_rputs(" | I", r); break; default: ap_rputs(" | ?", r); break; } ap_rprintf(r, "\n | " #ifdef HAVE_TIMES "%.2f | " #endif "%ld | %ld", #ifdef HAVE_TIMES (ws_record->times.tms_utime + ws_record->times.tms_stime + ws_record->times.tms_cutime + ws_record->times.tms_cstime) / tick, #endif (long)apr_time_sec(nowtime - ws_record->last_used), (long)req_time); ap_rprintf(r, " | %-1.1f | %-2.2f | %-2.2f\n", (float)conn_bytes / KBYTE, (float) my_bytes / MBYTE, (float)bytes / MBYTE); ap_rprintf(r, " | %s | %s | " "%s |
| Srv | Child Server number - generation |
|---|---|
| PID | OS process ID |
| Acc | Number of accesses this connection / this child / this slot |
| M | Mode of operation |
| CPU | CPU usage, number of seconds |
| SS | Seconds since beginning of most recent request |
| Req | Milliseconds required to process most recent request |
| Conn | Kilobytes transferred this connection |
| Child | Megabytes transferred this child |
| Slot | Total megabytes transferred this slot |
ExtendedStatus On directive.\n", r);
}
}
{
/* Run extension hooks to insert extra content. */
int flags =
(short_report ? AP_STATUS_SHORT : 0) |
(no_table_report ? AP_STATUS_NOTABLE : 0) |
(ap_extended_status ? AP_STATUS_EXTENDED : 0);
ap_run_status_hook(r, flags);
}
if (!short_report) {
ap_rputs(ap_psignature("