", r);
else
ap_rputs("Scoreboard: ", r);
for (i = 0; i < server_limit; ++i) {
for (j = 0; j < thread_limit; ++j) {
int indx = (i * thread_limit) + j;
ap_rputc(stat_buffer[indx], r);
if ((indx % STATUS_MAXLINE == (STATUS_MAXLINE - 1))
&& !short_report)
ap_rputs("\n", r);
}
}
if (short_report)
ap_rputs("\n", r);
else {
ap_rputs("\n", r);
ap_rputs("Scoreboard Key:
\n", r);
ap_rputs("\"_\" Waiting for Connection, \n", r);
ap_rputs("\"S\" Starting up, \n", r);
ap_rputs("\"R\" Reading Request,
\n", r);
ap_rputs("\"W\" Sending Reply, \n", r);
ap_rputs("\"K\" Keepalive (read), \n", r);
ap_rputs("\"D\" DNS Lookup,
\n", r);
ap_rputs("\"C\" Closing connection, \n", r);
ap_rputs("\"L\" Logging, \n", r);
ap_rputs("\"G\" Gracefully finishing,
\n", r);
ap_rputs("\"I\" Idle cleanup of worker, \n", r);
ap_rputs("\".\" Open slot with no current process
\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", r);
ap_rputs("\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("