Maison > Article > développement back-end > Analyse des principes de développement du module multijoueur PHP_compétences PHP
Cet article explique en détail les principes du développement PHP multi-personnes et ce à quoi il faut prêter attention Pour ceux qui viennent d'apprendre le langage PHP ou qui ont déjà commencé. à la recherche d'un emploi Hey les gars, ne manquez pas cet article sur l'analyse des principes de développement du module multijoueur PHP ! !
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 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 est configuré via fastcgi_pass et transmet la requête à PHP-FPM pour analyser le code PHP. analyseur à chaque fois Commencez l'analyse à partir d'index.php, traitez-le jusqu'au bout, effectuez une série de traitements logiques, requête base de données ou 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 plusieurs 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 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
Nous pouvons utiliser Modifier En-têtes pour parcourir le plug-in du serveur, modifier les informations d'en-tête de la requête http, définir un paramètre http_who sur wulv, puis l'obtenir 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 tout le contenu de cet article, j'espère qu'il pourra être utile à tout le monde ! !
Recommandations associées :
Explication détaillée des principes de l'environnement de développement multi-joueurs PHP
Comment implémenter Session avec Redis dans la distribution PHP
La solution parfaite à l'incapacité de PHP à télécharger des fichiers volumineux
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!