Grâce à la conception modulaire de nginx, il est très pratique d'utiliser nginx pour le développement modulaire, mais cela pose également le problème du code complexe et des difficultés de lecture . Tout d'abord, voyons comment le module http est préparé. La fonction (ou gestionnaire) qui gère réellement les requêtes http est ngx_http_wait_request_handler.
rev->handler = ngx_http_wait_request_handler;
En prenant cette fonction comme exemple, voyons comment le module http monte ce gestionnaire, comme indiqué ci-dessous
ngx_http_block () est un fonction de module typique dans nginx. Cette fonction sera appelée lorsque le module entier sera chargé
Une fois le gestionnaire raccroché, quand ce gestionnaire sera-t-il appelé ?
Cela dépend du module d'événement de nginx. La fonction implémentée par le module d'événement est d'enregistrer le fd utilisé pour accepter dans epoll. Lorsqu'une demande client arrive, un nouveau connfd est généré, puis. Supprimez une connexion du pool de connexions, initialisez la connexion (c'est-à-dire écrivez le rappel de nos événements de lecture et d'écriture et d'autres éléments dans la connexion), puis enregistrez-la avec epoll De cette manière, tant que le connfd. est prêt, le gestionnaire de l'événement de lecture et d'écriture correspondant peut être appelé en fonction de l'état de lecture et d'écriture de fd.
Jetons un coup d'œil à la façon dont le module d'événement est initialisé puis surveillé pour accept_fd :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!