From: Jim Jagielski Date: Wed, 5 Dec 2012 17:07:50 +0000 (+0000) Subject: Add useful mod_status info... try to determine last time X-Git-Tag: 2.5.0-alpha~6066 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=97b4169558ccf1c7d16047c988af8719170672e9;p=thirdparty%2Fapache%2Fhttpd.git Add useful mod_status info... try to determine last time a specific vhost was accessed/used. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1417529 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/generators/mod_status.c b/modules/generators/mod_status.c index 54404e90bbf..0237f1d7f8d 100644 --- a/modules/generators/mod_status.c +++ b/modules/generators/mod_status.c @@ -619,6 +619,7 @@ static int status_handler(request_rec *r) } if (ap_extended_status && !short_report) { + apr_table_t *vhosts = apr_table_make(r->pool, 10); if (no_table_report) ap_rputs("

Server Details

\n\n", r); else @@ -635,6 +636,10 @@ static int status_handler(request_rec *r) for (i = 0; i < server_limit; ++i) { for (j = 0; j < thread_limit; ++j) { + char *escvhost; + long last_used; + const char *vlast; + ws_record = ap_get_scoreboard_worker_from_indexes(i, j); if (ws_record->access_count == 0 && @@ -654,6 +659,22 @@ static int status_handler(request_rec *r) if (req_time < 0L) req_time = 0L; + escvhost = ap_escape_html(r->pool, ws_record->vhost); + last_used = (long)apr_time_sec(nowtime - ws_record->last_used); + if (escvhost && *escvhost) { + if ((vlast = apr_table_get(vhosts, escvhost)) != NULL) { + long temp = atol(vlast); + if (last_used < temp) { + apr_table_setn(vhosts, apr_pstrdup(r->pool, escvhost), + apr_psprintf(r->pool, "%ld", last_used)); + } + } + else { + apr_table_setn(vhosts, apr_pstrdup(r->pool, escvhost), + apr_psprintf(r->pool, "%ld", last_used)); + } + } + lres = ws_record->access_count; my_lres = ws_record->my_access_count; conn_lres = ws_record->conn_count; @@ -733,8 +754,7 @@ static int status_handler(request_rec *r) ws_record->times.tms_cutime / tick, ws_record->times.tms_cstime / tick, #endif - (long)apr_time_sec(nowtime - - ws_record->last_used), + last_used, (long) req_time); format_byte_out(r, conn_bytes); @@ -750,8 +770,7 @@ static int status_handler(request_rec *r) ap_escape_html(r->pool, ap_escape_logitem(r->pool, ws_record->request)), - ap_escape_html(r->pool, - ws_record->vhost)); + escvhost); } else { /* !no_table_report */ if (ws_record->status == SERVER_DEAD) @@ -820,8 +839,7 @@ static int status_handler(request_rec *r) ws_record->times.tms_cutime + ws_record->times.tms_cstime) / tick, #endif - (long)apr_time_sec(nowtime - - ws_record->last_used), + last_used, (long)req_time); ap_rprintf(r, "%-1.1f%-2.2f%-2.2f\n", @@ -832,8 +850,7 @@ static int status_handler(request_rec *r) "%s\n\n", ap_escape_html(r->pool, ws_record->client), - ap_escape_html(r->pool, - ws_record->vhost), + escvhost, ap_escape_html(r->pool, ap_escape_logitem(r->pool, ws_record->request))); @@ -842,6 +859,10 @@ static int status_handler(request_rec *r) } /* for (i...) */ if (!no_table_report) { + int i; + const apr_array_header_t *arr = apr_table_elts(vhosts); + const apr_table_entry_t *elts = (const apr_table_entry_t *)arr->elts; + ap_rputs("\n \
\ \n \ @@ -860,6 +881,13 @@ static int status_handler(request_rec *r) \n \ \n \
ChildMegabytes transferred this child
SlotTotal megabytes transferred this slot
\n", r); + ap_rputs("
\n\n\ +\n", r); + for (i = 0; i < arr->nelts; i++) { + ap_rprintf(r, "\n", + elts[i].key, elts[i].val); + } + ap_rputs("
VhostSeconds since last used
%s
%27s
\n", r); } } /* if (ap_extended_status && !short_report) */ else {