Maison  >  Article  >  développement back-end  >  Exemple d'analyse des principes de développement de modules multijoueurs PHP

Exemple d'analyse des principes de développement de modules multijoueurs PHP

小云云
小云云original
2017-12-14 09:57:301259parcourir

En tant que meilleur langage au monde, il occupe environ 80 % du Web. Les petites et moyennes entreprises utilisent essentiellement l'architecture lnmp. Lorsqu'il y a plus de 1 ou 20 développeurs dans un entrepôt, chaque personne peut développer différents modules et fonctions, et utiliser des outils de contrôle de version de code tels que git pour ouvrir différentes branches. Le processus consiste probablement à d'abord configurer un environnement complet localement et à le développer. Déployez-le dans l'environnement de test. Après l'auto-test ou le test du testeur, déployez dans l'environnement de pré-version. La pré-version est fondamentalement la même que l'environnement en ligne, puis le produit est accepté. il est publié et lancé en ligne.

En raison du développement parallèle, il doit y avoir des situations où plusieurs fonctions sont acceptées ou testées en même temps. À ce moment-là, quel code sera déployé dans l'environnement de pré-version ? Si vous passez à la branche de A, B ne pourra pas l'accepter. Par conséquent, nous espérons qu'il y aura un environnement de développement multi-personnes où le processus de développement de chacun ne s'affecte pas les uns les autres. Cet article explique principalement en détail les principes du développement multi-personnes PHP et ce à quoi il faut prêter attention. J'espère que cela pourra aider tout le monde.

Principe de fonctionnement de PHP

Tout d'abord, analysons le principe de fonctionnement de PHP et examinons les caractéristiques du langage PHP. Lorsque nous lançons une requête depuis le navigateur, notre serveur web (Nginx, Apache, etc.) écoute le port 80 ou 443. Regardons la configuration vhost la plus simple de Nginx :


server {
 listen    80;
 server_name test.com;
 
 root /data/gateway/html;
 index  index.php;

 location ~ \.php$ {
  fastcgi_pass  127.0.0.1:9001; #unix:/Users/run/php-fcgi.sock;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include    fastcgi_params;
 }
}


Nginx écoute le port 80 et utilise la configuration vhost correspondante lorsqu'elle correspond au nom de domaine visité par l'utilisateur est test.com. PHP-FPM démarre un service sur le serveur et écoute un port (tel que 9001) ou un socket Unix. Nginx transmet la requête à PHP-FPM pour analyser le code PHP via la configuration fastcgi_pass. à chaque fois, traitez-le jusqu'au bout, effectuez une série de traitements logiques, interrogez la base de données ou le cache et d'autres opérations, et renvoyez un HTML ou d'autres résultats à Nginx, et Nginx le renvoie au navigateur. Le processus est le suivant :

CGI : C'est un protocole d'échange de données entre Nginx et PHP_FPM.

FastCGI : identique à CGI, c'est un protocole de communication, mais il présente quelques optimisations en termes d'efficacité par rapport à CGI.

PHP-CGI : C'est le programme d'interface PHP pour le protocole CGI fourni par Nginx.

PHP-FPM : C'est le programme d'interface PHP pour le protocole FastCGI fourni par Nginx. Il permet également une gestion des tâches relativement intelligente.

Environnement de développement multi-personnes

D'après le principe PHP, nous pouvons voir que PHP n'est en fait qu'un langage de script interprété. Chaque requête doit être analysée à partir d'index.php. Une fois, peut-on nommer plusieurs dossiers sur le serveur en fonction des noms de différents développeurs ? Dans chaque dossier, cloner le référentiel de code et basculer vers sa propre branche. Laissez ensuite Nginx gérer l'index dans le répertoire de chaque personne. Par exemple, accédez directement à http://wulv.test.com/, obtenez wulv dans Nginx et définissez root sur le répertoire wulv, afin de pouvoir accéder au code dans le répertoire wulv. Vous pouvez configurer Nginx comme ceci :


set $who www;
if ($http_who != "") {
  set $who $http_who;
}
root /data/gateway/$who/html;


Nous pouvons laisser l'URL transporter le répertoire de l'utilisateur et l'intercepter dans Nginx. Apportez-le aux endroits suivants :

hôte : http://wulv.test.com

chemin : http://www.test.com/wulv

requête : http://www.test.com?http_who=wulv

Cela peut généralement répondre aux exigences, mais il y a encore quelques problèmes. Par exemple, certains liens sur le. page sont codées en dur, sans utiliser de chemin relatif, vous accéderez à www.test.com dès que vous cliquerez dessus, ou certaines applications tierces telles que OAuth doivent vérifier le nom de domaine, et vous ne le serez pas. pouvoir se connecter s'il est incompatible avec le nom de domaine en ligne. D'autres moyens sont donc nécessaires pour y parvenir, tels que :

en-tête de requête http

cookie

Nous pouvons utiliser le plug-in de navigateur Modifier les en-têtes pour modifier la requête http Pour les informations d'en-tête, définissez un paramètre http_who sur wulv, puis obtenez-le dans Nginx.

Développer

Si les conditions le permettent, vous pouvez réellement créer un serveur de passerelle et créer une page de configuration. Configurez les répertoires auxquels il faut accéder dans la page de configuration. , la passerelle Il vous aidera directement à définir l'en-tête http et à le transmettre par proxy au serveur correspondant. De cette façon, vous n’avez même pas besoin d’installer des plug-ins de navigateur, ce qui est plus convivial pour les opérations et la conception des produits.

Recommandations associées :

Introduction aux connaissances liées au développement de modules php

Qu'est-ce que le développement de modules php ? Introduction au développement simple de modules php

Analyse du développement de modules du framework Yii

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn