2015-04-30 1 views
0

Comment puis-je obtenir le nombre de connexions ouvertes (combien de différents navigateurs tentent d'atteindre le serveur). J'ai essayé de regarder dans le struct request_rec qui est disponible dans chaque gestionnaire de fonctions ..
request_rec->connection->conn_config sonne comme le domaine le plus pertinent (type ap_conf_vector_t, mais je ne sais pas comment obtenir les informations de lui.Retourne le nombre de connexions dans Apache C-Module

Merci

!

Répondre

1

il n'y a pas comptoir spécial pour elle

Vous devez passer par les processus de tous les apaches et les compter, selon son statut, comme mod_status faire:.

int server_limit, thread_limit; 
int j, i, res; 
int ready; 
int busy; 
worker_score *ws_record = apr_palloc(r->pool, sizeof *ws_record); 
process_score *ps_record; 

ap_mpm_query(AP_MPMQ_HARD_LIMIT_THREADS, &thread_limit); 
ap_mpm_query(AP_MPMQ_HARD_LIMIT_DAEMONS, &server_limit); 

ready = 0; 
busy = 0; 

for (i = 0; i < server_limit; ++i) { 
    ps_record = ap_get_scoreboard_process(i); 
    for (j = 0; j < thread_limit; ++j) { 
     ap_copy_scoreboard_worker(ws_record, i, j); 
     res = ws_record->status; 

     if (!ps_record->quiescing 
      && ps_record->pid) { 
      if (res == SERVER_READY && 
       ps_record->generation == ap_my_generation) 
       ready++; 
      else if (res != SERVER_DEAD && 
        res != SERVER_STARTING && 
        res != SERVER_IDLE_KILL) 
       busy++; 
     } 
    } 
} 
+0

Merci pour votre réponse, mais je vois que la solution ne fait qu'accroître les compteurs il ne reflète pas l'état réel .. – ItayB

+1

Oui, ce code ne traite que quand dénombre il est appelé. Si vous devez gérer une table mise à jour dynamiquement avec des compteurs, le code devrait être plus complexe. – umka