Heim  >  Artikel  >  Backend-Entwicklung  >  Prinzipielle Analyse der PHP-Multiplayer-Modulentwicklung

Prinzipielle Analyse der PHP-Multiplayer-Modulentwicklung

jacklove
jackloveOriginal
2018-07-05 18:02:101412Durchsuche

In diesem Artikel werden die Prinzipien der PHP-Mehrpersonenentwicklung ausführlich erläutert und worauf geachtet werden muss. Lassen Sie uns darauf zurückgreifen und gemeinsam lernen.

Als beste Sprache der Welt nimmt sie etwa 80 % des Webs ein. Kleine und mittlere Unternehmen nutzen grundsätzlich die LNMP-Architektur. Wenn es mehr als 1 oder 20 Entwickler in einem Warehouse gibt, kann jede Person unterschiedliche Module und Funktionen entwickeln und Tools zur Codeversionskontrolle wie Git verwenden, um verschiedene Zweige zu öffnen. Der Prozess besteht wahrscheinlich darin, zunächst eine vollständige Umgebung lokal einzurichten und zu entwickeln Stellen Sie es in der Testumgebung bereit und stellen Sie es in der Vorabversionsumgebung bereit. Nach Abschluss der Abnahme erfolgt die Bereitstellung. es wird online veröffentlicht.

Aufgrund der parallelen Entwicklung muss es Situationen geben, in denen mehrere Funktionen gleichzeitig akzeptiert oder getestet werden. Wessen Code wird zu diesem Zeitpunkt in der Vorabversionsumgebung bereitgestellt? Wenn Sie in den Zweig von A wechseln, kann B dies nicht akzeptieren. Daher hoffen wir, dass es eine Entwicklungsumgebung für mehrere Personen geben wird, in der sich der Entwicklungsprozess aller nicht gegenseitig beeinflusst.

Das Funktionsprinzip von PHP

Lassen Sie uns zunächst das Funktionsprinzip von PHP analysieren und einen Blick auf die Sprache werfen Eigenschaften von PHP. Wenn wir eine Anfrage vom Browser initiieren, lauscht unser Webserver (Nginx, Apache usw.) auf Port 80 oder 443. Schauen wir uns die einfachste Vhost-Konfiguration von Nginx an:

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 überwacht Port 80 und verwendet die entsprechende Vhost-Konfiguration, wenn festgestellt wird, dass der vom Benutzer besuchte Domänenname test.com ist. PHP-FPM startet einen Dienst auf dem Server und lauscht auf einen Port (z. B. 9001) oder einen Unix-Socket. Nginx leitet die Anfrage an PHP-FPM weiter, um den PHP-Code über die fastcgi_pass-Konfiguration zu analysieren Verarbeiten Sie es jedes Mal vollständig, führen Sie eine Reihe logischer Verarbeitungen durch, fragen Sie die Datenbank oder den Cache und andere Vorgänge ab und geben Sie ein HTML oder andere Ergebnisse an Nginx zurück, und Nginx gibt es an den Browser zurück. Der Prozess ist wie folgt:

CGI: Es ist ein Protokoll für den Datenaustausch zwischen Nginx und PHP_FPM.

FastCGI: Wie CGI handelt es sich um ein Kommunikationsprotokoll, das jedoch einige Effizienzoptimierungen aufweist als CGI.

PHP-CGI: Es ist das Schnittstellenprogramm von PHP für das von Nginx bereitgestellte CGI-Protokoll.

PHP-FPM: Es ist das Schnittstellenprogramm von PHP für das von Nginx bereitgestellte FastCGI-Protokoll. Es bietet auch eine relativ intelligente Aufgabenverwaltung.

Mehrpersonen-Entwicklungsumgebung

Aus dem PHP-Prinzip können wir erkennen, dass PHP eigentlich nur ein interpretiertes Skript ist Sprache: Jede Anfrage muss von index.php aus analysiert werden. Können wir dann viele Ordner auf dem Server nach den Namen verschiedener Entwickler benennen und in jedem Ordner das Code-Repository klonen und zu einem eigenen Zweig wechseln? Lassen Sie dann Nginx den Index im Verzeichnis jeder Person verwalten. Greifen Sie beispielsweise direkt auf http://wulv.test.com/ zu, rufen Sie wulv in Nginx ab und legen Sie root auf das Wulv-Verzeichnis fest, damit Sie auf den Code im Wulv-Verzeichnis zugreifen können. Sie können Nginx wie folgt einstellen:

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

Wir können die URL das Verzeichnis des Benutzers übertragen lassen, es in Nginx abfangen und an den folgenden Stellen übertragen:

Host: http://wulv.test.com

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

Abfrage: http : //www.test.com?http_who=wulv

Dies kann im Allgemeinen die Anforderungen erfüllen, es gibt jedoch immer noch einige Probleme. Beispielsweise sind einige Links auf der Seite fest codiert und nicht Verwenden Sie relative Pfade. Wenn Sie darauf klicken, gelangen Sie erneut zu www.test.com, oder einige Anwendungen von Drittanbietern wie OAuth müssen den Domänennamen überprüfen. Wenn der Domänenname nicht mit dem Online-Domänennamen übereinstimmt, können Sie sich nicht anmelden überhaupt. Daher sind andere Wege erforderlich, um dies zu erreichen, wie zum Beispiel:

http-Request-Header

Cookie

Wir können das Browser-Plug-in „Modify Headers“ verwenden Um die HTTP-Anfrage zu ändern, setzen Sie für Header-Informationen einen Parameter http_who auf wulv und rufen Sie ihn dann in Nginx ab.

Erweitern

Wenn die Bedingungen es zulassen, können Sie tatsächlich einen Gateway-Server erstellen und auf der Konfigurationsseite eine Konfigurationsseite erstellen Verzeichnis, auf das Sie zugreifen müssen, hilft Ihnen das Gateway direkt dabei, den HTTP-Header festzulegen und ihn an den entsprechenden Server weiterzuleiten. Auf diese Weise müssen Sie nicht einmal Browser-Plug-Ins installieren, was den Betrieb und das Produktdesign benutzerfreundlicher macht.

Eine Beispielerklärung für die Verwendung von XHProf zum Auffinden von PHP-Leistungsengpässen

Zugehörige Zusammenfassung der Anweisungen für benutzerdefinierte Vorlagen im Laravel-Framework

Ein Beispiel für die rekursive Implementierung einer schnellen Sortierung in PHP

Das obige ist der detaillierte Inhalt vonPrinzipielle Analyse der PHP-Multiplayer-Modulentwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn