Maison  >  Article  >  développement back-end  >  À propos des principes de développement de modules multijoueurs en PHP

À propos des principes de développement de modules multijoueurs en PHP

不言
不言original
2018-06-19 10:08:501205parcourir

Cet article explique en détail les principes du développement PHP multi-personnes et ce à quoi il faut prêter attention. Référons-nous-y et apprenons ensemble.

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.

Le principe de fonctionnement de PHP

Tout d'abord, analysons le principe de fonctionnement de PHP et jetons un oeil au langage caractéristiques de 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 fait que le 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, 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 script interprété Langue, chaque requête doit être analysée à partir d'index.php, alors peut-on nommer de nombreux dossiers sur le serveur en fonction des noms de différents développeurs, et 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 définir 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, l'intercepter dans Nginx et la transporter 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 la page sont codés en dur et. aucun chemin relatif n'est utilisé. Dès que vous cliquez, vous accéderez à www.test.com, ou certaines applications tierces telles que OAuth doivent vérifier le nom de domaine. Si le nom de domaine est incohérent avec le nom de domaine en ligne, vous ne pourrez pas vous connecter. 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 effectivement créer un serveur passerelle et une page de configuration dans la page de configuration Configurer l'annuaire vous devez y accéder lors de votre prochaine visite, la passerelle 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.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

À propos de php Problèmes de chiffrement pendant le développement

À propos de l'analyse du chiffrement et du déchiffrement PHP

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