Je commence juste à comprendre comment fonctionne un serveur apache etles autre jour, je suis tombé sur un problème lors de la programmation d'une page Web très simple, tout en affichant un nombre de succès pour la page:Apache Prefork/MPM Worker
/* The simplest HelloWorld module */
#include <httpd.h>
#include <http_protocol.h>
#include <http_config.h>
static int noOfViews = 0;
static int helloworld_handler(request_rec *r)
{
if (!r->handler || strcmp(r->handler, "helloworld")) {
return DECLINED;
}
if (r->method_number != M_GET) {
return HTTP_METHOD_NOT_ALLOWED;
}
noOfViews++;
ap_set_content_type(r, "text/html;charset=ascii");
ap_rputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n",
r);
ap_rputs("<html><head><title>Apache HelloWorld "
"Module</title></head>", r);
ap_rputs("<body><h1>Hello World!</h1>", r);
ap_rputs("<p>This is the Apache HelloWorld module!</p>", r);
ap_rprintf(r, "<p>Views: %d</p>", noOfViews);
ap_rputs("</body></html>", r);
return OK;
}
static void helloworld_hooks(apr_pool_t *pool)
{
ap_hook_handler(helloworld_handler, NULL, NULL, APR_HOOK_MIDDLE);
}
module AP_MODULE_DECLARE_DATA helloworld_module = {
STANDARD20_MODULE_STUFF,
NULL,
NULL,
NULL,
NULL,
NULL,
helloworld_hooks
};
Ce qui s'est passé en fait c'est quand je rafraîchirais la page, le compteur d'accès augmenterait, mais parfois il tomberait aléatoirement en nombre. Quelqu'un m'a dit que c'était à cause de la façon dont fonctionnait le MPM Apache Prefork. Après avoir lu ceci:
http://httpd.apache.org/docs/2.0/mod/prefork.html
Je comprends le problème plus, mais je ne suis toujours pas sûr à 100% ce qui se passe. Ainsi, le MPM prefork crée un tas de processus enfants, dont certains sont inactifs, et attend que les clients se connectent. Ainsi, lorsque j'actualise la page, je me connecte à un ensemble de processus enfants différents que le serveur exécute. Cependant, ce module a un nombre limité de processus fils qu'il peut maintenir en même temps, donc parfois quand il tue un processus, mon compteur tombe en panne. Je ne suis pas entièrement sûr si cette explication est correcte ou pourquoi exactement le compteur tombe.
Tous les conseils sont appréciés.