Dieser Artikel vermittelt Ihnen relevantes Wissen über Swoole, einschließlich der Anforderung von Fastcgi an den Swoole-Masterprozess zur Verteilung an untergeordnete Prozesse, aber es wird nicht wie der untergeordnete PHP-FPM-Prozess sein, der nach der Verwendung beendet wird, und andere damit zusammenhängende Probleme Jeder ist hilfsbereit.
Empfohlenes Lernen: swoole-Video-Tutorial
Der gesamte Chatroom-Prozess ist:
- Anmeldung des Benutzers über die http-Schnittstelle, um eine Autorisierung zu erhalten
- Rufen Sie die Freundesliste, die letzte ungelesene Nachricht verschiedener Freunde und die Anzahl der ungelesenen Nachrichten (für die Homepage-Anzeige) über die Autorisierungsanfrage-http-Schnittstelle ab ?? Mechanismus zum Trennen und erneuten Verbinden: Wenn das Schließereignis ausgelöst wird, stellen Sie die Verbindung zu ws wieder her ws-Schnittstelle, der Client verarbeitet sie und schiebt sie in die Benachrichtigungsleiste usw.
- Neue Nachrichten-Push empfangen und in der Nachrichtenliste anzeigen
- Wenn Sie darauf klicken eine Gruppen-/Freund-Nachrichtenschnittstelle, die automatisch die neuesten n Nachrichten abruft und weiterhin n Nachrichten erhält, wenn der Benutzer aufruft
Betrieb im laufenden Modus
CGI-Protokollmodus
Gemeinsame Gateway-Schnittstelle im CGI-Modus, die es Webservern ermöglicht, über bestimmte Protokolle mit Anwendungen zu kommunizieren. Das Aufrufprinzip lautet ungefähr:
Benutzeranforderung – Webserver empfängt Anforderung – untergeordneter Fork-Prozess
Programm aufrufen/Programm ausführen->Das Programm gibt den Inhalt zurück/Der Programmaufruf endet->Der Webserver empfängt den Inhalt->Zurück an den BenutzerDa jede Benutzeranforderung gegabelt werden muss, um einen Prozess zu erstellen, rufen Sie das Programm einmal auf und zerstören Sie dann den Prozess, sodass die Leistung gering ist
Initialisierung des Fast-CGI-Prozessmanagers des Webservers –>Fork n Prozesse im Voraus
Benutzeranfrage –>Webserver empfängt die Anfrage –>übergibt sie an den Fast-CGI-Prozessmanager –>Fast-CGI-Prozessverwaltungsbereich empfängt sie und gibt sie an einen der inaktiven Fast-CGI-Prozesse weiter Verarbeitung –>Verarbeitung abgeschlossen, Der Fast-CGI-Prozess wird inaktiv und wartet auf die nächste Anfrage –> Der Webserver empfängt den Inhalt –>
Der offensichtliche Unterschied zwischen dem Befehlszeilenmodus und dem regulären Webmodus ist:
* Es gibt keine Timeout-Periode * Puffer ist standardmäßig deaktiviert * Verwendung von STDIN und STDOUT Standard-Eingabe/Ausgabe/ Fehler * echo var_dump, phpinfo und andere Ausgaben werden direkt an die Konsole ausgegeben * Verschiedene Klassen/Funktionen, die verwendet werden können * Verschiedenes PHP .ini-Konfigurationen php-fpm stdout- und stderr-Protokollierung; Seien Sie in der Lage, beschädigte Opcodes neu zu starten und zwischenzuspeichern, wenn unerwartete Situationen auftreten; Unterstützung für die Optimierung des Datei-Uploads; „Slow Log“ – zeichnet ungewöhnliche Langsamkeit auf, die durch die Ausführung des Skripts verursacht wird (zeichnet nicht nur den Dateinamen, sondern auch die PHP-Backtrace-Informationen auf; Sie können ptrace oder ähnliche Tools verwenden, um die laufenden Daten zu lesen und zu analysieren des Remote-Prozesses); fastcgi_finish_request() – Sonderfunktion: Wird verwendet, um zeitaufwändige Arbeiten im Hintergrund fortzusetzen (Konvertierung von Videoeingaben, statistische Verarbeitung usw.), nachdem die Anfrage abgeschlossen und die Daten aktualisiert wurden Dynamische/statische Unterprozessgenerierung; Grundlegende SAPI-Laufstatusinformationen (ähnlich dem mod_status von Apache); Basierend auf der Konfigurationsdatei php.ini. ... Aufgaben Das Netzwerkprotokoll ist entsprechend den Kommunikationsschritten in 7 Ebenen unterteilt: Anwendungsschicht
Präsentationsebene
Sitzungsschicht
Transportschicht
Netzwerkschicht
Datenverbindungsschicht
Physikalische Schicht
Das IP-Protokoll (Netzwerkschicht) ist das Grundprotokoll des Internets und derzeit das beliebteste Netzwerk Betrieb IP nutzt vier Schlüsseltechnologien zur Bereitstellung von Diensten: Diensttyp, Lebensdauer, Optionen und Header-Prüfcode. Der Servicetyp bezieht sich auf die erwartete Servicequalität. Ein Diensttyp ist eine Reihe von Parametern, die die Dienste darstellen, die das Internet bereitstellen kann. Dieser Diensttyp wird von Gateways verwendet, um die tatsächlichen Zustellungsparameter in einem bestimmten Netzwerk oder im nächsten Netzwerk, das durchgelassen wird, oder dem nächsten Gateway, das dieses Paket weiterleitet, auszuwählen. Die Lebensdauer ist die Obergrenze dafür, wie lange ein Paket leben kann. Es wird vom Absender festgelegt und von der Route verarbeitet. Wenn die Time-to-Live bei Nichtankunft Null ist, verwerfen Sie das Paket. Die Option ist für Steuerfunktionen wichtig, für die normale Kommunikation ist ihr Vorhandensein jedoch nicht erforderlich. Zu den Optionen gehören Zeitstempel, Sicherheit und spezielles Routing. Der Header-Prüfcode stellt die korrekte Übertragung der Daten sicher. Schlägt die Prüfung fehl, wird das gesamte Datenpaket verworfen. Bei der Übertragung von Daten von der Quelle zum Ziel benötigen Sie eine IP-Adresse, um sie zu übertragen. Jetzt werden IP-Adressen in IPv4- und IPv6-Adressen unterteilt Am gebräuchlichsten ist die IPv4-Adresse, z. B. 127.0.0.1 (lokale Adresse) 119.75.217.109 (Baidu-IP). Die IP-Übertragung muss eine eindeutige IP-Adresse haben, bevor Daten gesendet werden können TCP (Transmission Control Protocol) ist ein verbindungsorientiertes, zuverlässiges, Bytestrom-basiertes Transportschicht-Kommunikationsprotokoll, spezifiziert durch die RFC 793-Definition der IETF. Im vereinfachten OSI-Modell von Computernetzwerken vervollständigt es die von der vierten Schicht angegebenen Funktionen. Das User Datagram Protocol (UDP) ist ein weiteres wichtiges Transportprotokoll innerhalb derselben Schicht. In der Internetprotokoll-Suite ist die TCP-Schicht eine Zwischenschicht, die über der IP-Schicht und unterhalb der Anwendungsschicht liegt. Zwischen Anwendungsschichten verschiedener Hosts sind häufig zuverlässige, rohrförmige Verbindungen erforderlich, die IP-Schicht stellt jedoch keinen solchen Flussmechanismus bereit, sondern sorgt für eine unzuverlässige Paketvermittlung. Die Anwendungsschicht sendet einen Datenstrom, der durch 8-Bit-Bytes dargestellt wird, zur Übertragung zwischen Netzwerken an die TCP-Schicht, und dann teilt TCP den Datenstrom in Nachrichtensegmente geeigneter Länge (normalerweise durch den Computer verbunden) auf ) Die maximale Übertragungseinheit (MTU)-Grenze der Datenverbindungsschicht des Netzwerks. Anschließend leitet TCP das resultierende Paket an die IP-Schicht weiter, die das Paket über das Netzwerk an die TCP-Schicht der empfangenden Entität weiterleitet. Um sicherzustellen, dass es nicht zu Paketverlusten kommt, gibt TCP jedem Paket eine Sequenznummer. Gleichzeitig stellt die Sequenznummer sicher, dass die an die empfangende Endeinheit übertragenen Pakete der Reihe nach empfangen werden. Die empfangende Entität sendet dann eine entsprechende Bestätigung (ACK) für das erfolgreich empfangene Paket zurück. Wenn die sendende Entität innerhalb einer angemessenen Umlaufverzögerung (RTT) keine Bestätigung erhält, wird davon ausgegangen, dass das entsprechende Datenpaket verloren gegangen ist wird erneut übertragen. TCP verwendet eine Prüfsummenfunktion, um zu prüfen, ob die Daten fehlerhaft sind. Sowohl beim Senden als auch beim Empfang werden Prüfsummen berechnet. TCP ist das Transportschichtprotokoll im Internet, das das Drei-Wege-Handshake-Protokoll zum Herstellen einer Verbindung verwendet. Wenn die aktive Partei eine SYN-Verbindungsanforderung sendet, wartet sie darauf, dass die andere Partei mit SYN+ACK antwortet, und führt schließlich eine ACK-Bestätigung für die SYN der anderen Partei durch. Diese Methode zum Herstellen einer Verbindung kann fehlerhafte Verbindungen verhindern. Das von TCP verwendete Flusskontrollprotokoll ist ein Sliding-Window-Protokoll mit variabler Größe. Der Prozess des TCP-Drei-Wege-Handshakes ist wie folgt: Der Client sendet eine SYN-Nachricht (SEQ = x) an den Server und wechselt in den Status SYN_SEND.
Der Server empfängt die SYN-Nachricht, antwortet mit einer SYN (SEQ=y) ACK (ACK=x+1)-Nachricht und wechselt in den SYN_RECV-Status.
Der Client empfängt die SYN-Nachricht vom Server, antwortet mit einer ACK-Nachricht (ACK=y+1) und wechselt in den etablierten Status.
Nachdem die Verbindung erfolgreich ist, können beide Parteien jederzeit Byteströme aneinander übertragen und die Verbindung schließen. Die übertragenen Daten haben Folgendes Eigenschaften Die übertragenen Daten werden von TCP in zum Senden am besten geeignete Datenblöcke unterteilt und an das IP-Protokoll übergeben. Diese gesendeten Daten werden als Nachrichtensegment oder Segment bezeichnet
tcp ist eine zuverlässige Verbindung. Jedes Mal, wenn ein Datensegment gesendet wird, wird eine Bestätigung gesendet. Die Daten werden erneut gesendet
TCP speichert eine Prüfsumme seines Headers und seiner Daten. Hierbei handelt es sich um eine End-to-End-Prüfsumme, mit der etwaige Änderungen der Daten während der Übertragung erkannt werden sollen. Wenn in der Prüfsumme eines empfangenen Segments ein Fehler auftritt, verwirft TCP das Segment und bestätigt den Empfang des Segments nicht (in der Hoffnung, dass der Absender eine Zeitüberschreitung erfährt und erneut sendet).
Zwei Anwendungen tauschen über eine TCP-Verbindung einen Bytestrom aus 8-Bit-Bytes aus. TCP fügt keine Datensatzkennungen in den Bytestream ein. Wir nennen diesen Bytestream-Dienst. Wenn die Anwendung einer Partei zuerst 10 Bytes, dann 20 Bytes und dann 50 Bytes überträgt, kann die andere Partei der Verbindung nicht nachvollziehen, wie viele Bytes der Absender jedes Mal gesendet hat. Solange der eigene Empfangspuffer nicht voll ist, empfängt der TCP-Empfänger so viele, wie er empfangen kann. Ein Ende leitet einen Bytestrom an eine TCP-Verbindung weiter, und derselbe Bytestrom wird am anderen Ende der TCP-Verbindung angezeigt.
Der Verbindungsaufbau erfordert drei Handshakes und der Verbindungsabbau erfordert vier Wellen, was durch TCPs Half-Close verursacht wird. Der spezifische Prozess ist wie folgt. Ein Anwendungsprozess ruft zunächst den Abschluss auf, der als „aktiver Abschluss“ bezeichnet wird. Der TCP auf dieser Seite sendet dann ein FIN-Segment, um anzuzeigen, dass die Daten gesendet wurden.
Der Peer, der diese FIN empfängt, führt einen „passiven Abschluss“ (passives Schließen) durch und diese FIN wird von TCP bestätigt.
Hinweis: Der Empfang von FIN wird auch als End-of-File an den empfangenden Bewerbungsprozess weitergeleitet und nach allen anderen Daten platziert, die für den Empfang durch den Bewerbungsprozess in der Warteschlange stehen, da der Empfang von FIN bedeutet, dass die Der empfangende Bewerbungsprozess hat auf der entsprechenden Verbindung keine weiteren Daten zu empfangen.
Nach einer Weile ruft der Anwendungsprozess, der dieses Dateiendezeichen empfängt, close auf, um seinen Socket zu schließen. Dies führt dazu, dass sein TCP ebenfalls eine FIN sendet.
Der ursprüngliche sendende TCP, der diese endgültige FIN empfängt (d. h. die Seite, die das aktive Herunterfahren durchführt), bestätigt diese FIN. Da für jede Richtung ein FIN und ein ACK erforderlich sind, sind normalerweise 4 Segmente erforderlich.
„Normalerweise“ bedeutet, dass in einigen Fällen die FIN von Schritt 1 zusammen mit den Daten gesendet wird. Darüber hinaus stammen die in den Schritten 2 und 3 gesendeten Abschnitte von dem Ende, das das passive Herunterfahren durchführt, und möglicherweise auch in Abschnitt A zusammengefasst. Zwischen den Schritten 2 und 3 ist es möglich, Daten von der Seite, die das passive Herunterfahren durchführt, zu der Seite zu fließen, die das aktive Herunterfahren durchführt. Dies wird als „halbes Schließen“ bezeichnet. Wenn ein Unix-Prozess beendet wird, entweder freiwillig (Aufruf von Exit oder Rückkehr von der Hauptfunktion) oder unfreiwillig (Empfang eines Signals, das den Prozess beendet), werden alle offenen Deskriptoren geschlossen, was auch dazu führt, dass alle TCPs noch offen sind. Außerdem wird eine FIN ausgegeben die Verbindung. Sowohl der Client als auch der Server können ein aktives Herunterfahren durchführen. Normalerweise führt der Client ein aktives Herunterfahren durch, aber bei einigen Protokollen, wie etwa HTTP/1.0, führt der Server ein aktives Herunterfahren durch. php kann die Socket-Funktion, die Swoole-Erweiterung und die Stream-Funktion verwenden, um einen Socket des TCP-Protokolls zu erstellen, den Netzwerkkarten-Port zu binden und einen TCP-Server auszuführen /client-Operationen In PHP müssen wir den TCP-Handshake/das Winken nicht verstehen, wir müssen nur wissen, dass ip:port einen TCP-Server/-Client verbinden/erstellen kann Mit dem PHP-Socket können wir Zeichenfolgen direkt senden und empfangen ist auch ein String, alles andere ist Sprache und was das Betriebssystem tun muss Wir müssen uns nur um die Integrität des Strings kümmern Nach der Clientverbindung erfolgreich war, schickte eine Zeichenfolge „easyswoole ist ein sehr gutes Swoole-Framework“
Der Server empfängt jedes Mal nur 9 Bytes, sodass bei der ersten Erfassung nur die unvollständige Zeichenfolge „easyswool“ empfangen wird und Sie weiterhin Daten abrufen müssen httpDer Ablauf einer Anfrage ist ungefähr wie folgt: Die Benutzereingaben im Browser
www.easyswoole.com DNS-Serveranalyse/oder Vergleich lokaler Hosts, Router-Hosts, um IP zu erhalten
Wenn der Browser auf den Standardport 80 zugreift, lautet die aufgerufene TCP-Adresse ip:80
TCP-Protokoll 3-Wege-Handshake zum Herstellen einer Verbindung
Senden Sie einen HTTP-Anfrage-Anfrage-Header
Der Server erhält den Anforderungsheader der HTTP-Anforderung, der angibt, dass es sich um einen HTTP-Zugriff handelt, analysiert den HTTP-Anforderungsheader, erhält den Anforderungstyp, das Anforderungsformat und die Anforderungsdaten (Cookie, Get, Post-Daten)
Der Server sendet Antwortdaten und trennt aktiv die Verbindung
Der Browser empfängt die Antwortdaten, analysiert den Antworttexttyp, analysiert die Daten und trennt die Verbindung
Im https-Protokoll gibt es eine zusätzliche Schicht von TLS- und SSL-Verschlüsselungs- und Entschlüsselungsprotokollen in der Anfrage und Antwort. Der Standardport hat sich von 80 auf 443 geändert
Vor dem WebSocket-Protokoll konnte ein Chatroom auf einer Webseite nur Ajax verwenden, um kontinuierlich abzufragen und anzufragen, ob der Server über Daten verfügt wird generiert, und eine solche Implementierungsmethode verursacht eine Reihe von Problemen: Wenn das Abfrageintervall zu kurz ist, führt dies dazu, dass Client und Server innerhalb eines bestimmten Zeitraums kontinuierlich http-TCP-Handshakes durchführen / Wellenbewegungen und die Übertragung von HTTP-Anforderungsheadern und Antwortheadern verbrauchen viele Serverressourcen. Bei einer großen Anzahl von Benutzern ist der Server ausgelastet und es kommt sogar zu Ausfallzeiten
. Die beiden können Daten direkt aneinander übermitteln. In diesem WebSocket-Protokoll bringt es uns zwei große Vorteile, Echtzeitdienste zu erreichen:
UDP ist die Abkürzung für User Datagram Protocol. Der chinesische Name ist User Datagram Protocol, was OSI (Open System Interconnection, Open System Interconnection) ist. Referenz Ein verbindungsloses Transportschichtprotokoll im Modell, das einfache und unzuverlässige transaktionsorientierte Informationsübertragungsdienste bereitstellt. IETF RFC 768 ist die formale Spezifikation von UDP. Die Protokollnummer von UDP in IP-Paketen beträgt 17. Der vollständige Name des UDP-Protokolls ist User Datagram Protocol. Im Netzwerk wird es zur Verarbeitung von Datenpaketen wie das TCP-Protokoll verwendet. Im OSI-Modell ist die vierte Schicht – die Transportschicht – die obere Schicht des IP-Protokolls. UDP hat den Nachteil, dass es keine Gruppierung und Zusammenstellung von Datenpaketen ermöglicht und Datenpakete nicht sortieren kann. Das heißt, nach dem Senden einer Nachricht ist es unmöglich zu wissen, ob sie sicher und vollständig angekommen ist. UDP wird zur Unterstützung von Netzwerkanwendungen verwendet, die Daten zwischen Computern übertragen müssen. Zahlreiche Client/Server-Netzwerkanwendungen, einschließlich Netzwerk-Videokonferenzsysteme, erfordern die Verwendung des UDP-Protokolls. Das UDP-Protokoll wird seit seiner Einführung schon seit vielen Jahren verwendet. Obwohl sein anfänglicher Ruhm von einigen ähnlichen Protokollen in den Schatten gestellt wurde, ist UDP auch heute noch ein sehr praktisches und praktikables Protokoll der Netzwerktransportschicht. Wie das bekannte TCP-Protokoll (Transmission Control Protocol) liegt das UDP-Protokoll direkt über dem IP-Protokoll (Internet Protocol). Gemäß dem OSI-Referenzmodell (Open Systems Interconnection) sind sowohl UDP als auch TCP Transportschichtprotokolle. Die Hauptfunktion des UDP-Protokolls besteht darin, den Netzwerkdatenverkehr in Datenpakete zu komprimieren. Ein typisches Datenpaket ist eine Übertragungseinheit binärer Daten. Die ersten 8 Bytes jedes Datenpakets werden zur Aufnahme von Header-Informationen und die restlichen Bytes zur Aufnahme spezifischer Übertragungsdaten verwendet. udp ist ein verbindungsloses Protokoll und erfordert keinen TCP-Handshake
Die maximale Länge des jeweils gesendeten UDP beträgt 65535, während TCP nach dem Handshake kontinuierlich senden kann Das UDP-Protokoll verwendet den Prüfwert im Header, um die Datensicherheit zu gewährleisten. Der Prüfwert wird zunächst durch einen speziellen Algorithmus beim Datensender berechnet und muss nach der Weitergabe an den Empfänger neu berechnet werden. Wenn ein Datagramm während der Übertragung von Dritten manipuliert oder aufgrund von Leitungsrauschen oder aus anderen Gründen beschädigt wird, stimmen die Prüfsummenberechnungen von Sender und Empfänger nicht überein, sodass das UDP-Protokoll erkennen kann, ob ein Fehler vorliegt. Dies unterscheidet sich vom TCP-Protokoll, das einen Prüfwert erfordert. UDP-Nachrichten verfügen nicht über Zuverlässigkeitsgarantie-, Sequenzgarantie- und Flusskontrollfelder usw. und ihre Zuverlässigkeit ist schlecht. Da das UDP-Protokoll jedoch über weniger Steuerungsmöglichkeiten verfügt, ist die Verzögerung bei der Datenübertragung gering und die Datenübertragungseffizienz hoch. Es eignet sich für Anwendungen, die keine hohe Zuverlässigkeit erfordern, oder für Anwendungen, die Zuverlässigkeit garantieren können, wie z. B. DNS , TFTP und SNMP warten. In einer Umgebung, in der die Netzwerkqualität sehr unbefriedigend ist, ist der Verlust von UDP-Protokollpaketen schwerwiegender. TCP führt eine Bestätigungsüberprüfung durch, um sicherzustellen, dass die andere Partei erfolgreich empfängt udp kann an alle Hosts im Gateway senden bereits erwähnt, Multiprozess ist hauptsächlich eine Entwicklungsmethode zur Entwicklung der Geschäftslogikebene und zur parallelen Verarbeitung mehrerer Aufgaben. Wie oben erwähnt, ist PHP-FPM der Prozessmanager von Fast-CGI dass mehrere Fast-CGI-Prozesse gestartet werden und auf die Aufgabenverarbeitung warten Im herkömmlichen Webmodus war PHP immer ein einzelner Prozess zur Verarbeitung der Geschäftslogik. Nur im PHP-CLI-Modus, der zur Verarbeitung asynchroner Aufgaben und als Netzwerkserver verwendet wird, können mehrere Prozesse ausgeführt werden Verarbeitung verwendet werden. Daher sind die meisten PHPer für Nicht vertraut mit dem Konzept der PHP-Mehrprozessverarbeitung geeignet Die Pipeline-Kommunikation ist in benannte Pipes und unbenannte Pipes unterteilt. Warten Sie, Sie können es selbst tun. Suchen Sie nach Details
Nachrichtenwarteschlangenkommunikation unter Verwendung der Linux-Nachrichtenwarteschlange, erweitert durch sysvmsg, Sie können Folgendes anzeigen:
http://www.php20.cn/article/137 Prozesssignalkommunikation, Sie können Folgendes anzeigen:
http://www.php20.cn/article/134 Die Shared-Memory-Kommunikation bildet einen Speicherabschnitt ab, auf den andere Prozesse zugreifen können. Dieser Shared-Memory wird von einem Prozess erstellt, kann aber von mehreren Prozessen aufgerufen werden.
Shared Memory ist die schnellste IPC-Methode. Sie wurde speziell für die Ineffizienz anderer prozessübergreifender Kommunikationsmethoden entwickelt.
Es wird häufig in Verbindung mit anderen Kommunikationsmechanismen wie Signalen verwendet, um eine Synchronisierung und Kommunikation zwischen Prozessen zu erreichen.
Socket-Kommunikation
Die Kommunikation mit Dritten kann auch mithilfe von Dateioperationen, MySQL, Redis und anderen Methoden erreicht werden Coroutine Coroutine ist kein Prozess oder Thread, sein Ausführungsprozess ähnelt eher einer Unterroutine. oder Sagt einen Funktionsaufruf ohne Rückgabewert. Ein Programm kann mehrere Coroutinen enthalten, was mit einem Prozess verglichen werden kann, der mehrere Threads enthält. Vergleichen wir also unten Coroutinen und Threads. Wir wissen, dass mehrere Threads relativ unabhängig sind, ihren eigenen Kontext haben und das Umschalten vom System gesteuert wird. Coroutinen sind ebenfalls relativ unabhängig, haben ihren eigenen Kontext, aber ihr Umschalten wird von ihnen selbst gesteuert Von der aktuellen Coroutine umgeschaltet. Der Wechsel zu anderen Coroutinen wird von der aktuellen Coroutine gesteuert. wird durch die oben genannte Coroutine-Ausführungssequenz bestimmt Code 2, wir können diese Coroutine leicht finden. Tatsächlich Es ist nur eine Funktion, die in einem Prozess ausgeführt wird, aber diese Funktion wird sozusagen bei der nächsten Ausführung umgeschaltet: Coroutine ist nur eine Reihe von Task-Codes, die im Prozess ausgeführt werden, aber diese Task-Codes können Beachten Sie, dass es sich bei Coroutinen nicht um parallele Multitasks handelt, sondern um serielle Multitasks. Jeder Prozess führt jeweils nur eine Task aus. Der Umfang der Coroutinen ist fällig zu den Coroutinen Ein Prozess ist eine Reihe von Aufgabencodes im Prozess, daher werden alle seine globalen Variablen, statischen Variablen und anderen Variablen gemeinsam genutzt, einschließlich des globalen Puffers von PHP
Apache+php-Laufzeit: Standardmäßig wird der Modulmodus verwendet, der PHP als Apache-Modul startet, wenn eine Benutzeranfrage empfangen wird, indem das Modul mod_php aufgerufen wird gefunden auf Baidu
php-cli-Modusphp-cli-Modus gehört zum Befehlszeilenmodus. Für viele Entwickler, die gerade mit dem Erlernen von PHP begonnen haben, ist dies der unbekannteste Betriebsmodus wamp und wnmpDieser Modus funktioniert nicht. Sie müssen andere Programme verwenden, um php xx.php direkt einzugeben und den PHP-Code auszuführen
Zu seinen Funktionen gehören:Erweiterte Prozessmanagementfunktionen, die einen reibungslosen Stopp/Start unterstützen;
Kann in verschiedenen UID-/GID-/Chroot-Umgebungen arbeiten, unterschiedliche Ports abhören und unterschiedliche php.ini-Konfigurationsdateien verwenden (kann die Einstellung „safe_mode“ ersetzen);
Geltungsbereich
Die Verantwortung von IP besteht darin, Daten von der Quelle zum Ziel zu übertragen. Es ist nicht verantwortlich für die Gewährleistung der Zustellungszuverlässigkeit, der Flusskontrolle, der Paketreihenfolge und anderer Dienste, die bei Host-to-Host-Protokollen üblich sind. Dieses Protokoll wird vom Host-to-Host-Protokoll aufgerufen und ist dafür verantwortlich, das lokale Netzwerkprotokoll aufzurufen, um das Datenpaket an das nächste Gateway oder den nächsten Zielhost zu übertragen. Beispielsweise kann TCP das IP-Protokoll aufrufen, beim Aufrufen von IP die Zieladresse und die Quelladresse als Parameter übergeben und die lokale Netzwerkschnittstelle (Protokoll) aufrufen, um das Datenpaket zu übertragen.
IP implementiert zwei Grundfunktionen: Adressierung und Segmentierung. IP kann das Datenpaket entsprechend der im Datenpaket-Header enthaltenen Zieladresse übertragen. In diesem Prozess ist IP für die Auswahl des Übertragungspfads verantwortlich. Diese Pfadauswahl wird als Routing-Funktion bezeichnet. Können einige Netzwerke nur kleine Datenpakete übertragen, kann IP die Datenpakete wieder zusammensetzen und dies im Header-Feld anzeigen. Diese Grundfunktionen sind im IP-Modul enthalten, das auf jedem Host und Gateway im Netzwerk vorhanden ist, und diese Module (insbesondere auf dem Gateway) verfügen über Routing- und andere Servicefunktionen. Bei IP gibt es keine Verbindung zwischen Datenpaketen und es ist schwierig, etwas über Verbindungen oder logische Verknüpfungen bei IP zu sagen.
IP-Adresse
tcp (Transport Layer)
Drei-Wege-Handshake
Die Verbindung ist erfolgreich
Vier Wellen
Der TCP in PHP
http-Protokoll
Prozessanalyse
http in PHPer
Da PHP hauptsächlich für Webserver verwendet wird, ist das Protokoll, dem PHP-Entwickler am meisten ausgesetzt sind, das http-Protokoll, das auf dem TCP/IP-Protokoll basiert Unter anderem PHP-Nachwuchsprogrammierer kennen das http-Protokoll nicht im Detail, können aber das f12->Netzwerk des Browsers verwenden, um die spezifischen Anforderungsheader des http-Protokolls und die vom Server gesendeten Antwortheader anzuzeigen
WebSocket Protokoll
generiert Hintergrund
Aufgrund dieser Situation ist nur ein HTTP-Handshake erforderlich, um eine lange Verbindung aufrechtzuerhalten, sodass der Server aktiv Nachrichten an den Client senden kann, wodurch sich die Anzahl der Runden erheblich verringert Abfragemechanismus
Implementierungsprinzip
Beim Implementieren einer WebSocket-Verbindung muss eine WebSocket-Verbindungsanforderung über den Browser ausgegeben werden, und dann sendet der Server eine Antwort wird üblicherweise „Handshake“ genannt
udp (Transportschicht)
UDP und TCP
Wenn wir eine PHP-Datei direkt ausführen, wird standardmäßig nur ein PHP-Prozess geöffnet, um den PHP-Code auszuführen.
Entwicklungsszenario mit mehreren Prozessen
Coroutine und Prozess
Verwenden Sie Code 2 in der Coroutine-Ausführungssequenz erklärt, dass, wenn Task1 $_GET['name'] den Wert 1 zuweist, Task2 $_GET['name'] liest und ebenfalls 1 ist und Task2 $ _GET['name'] Wenn der Wert 2 ist, liest Task3 $_GET['name'] und es wird auch 2 sein Der Coroutine sollte besondere Aufmerksamkeit gewidmet werden. Sie können eine E/A-Verbindung nicht gemeinsam nutzen, da es sonst zu Datenanomalien kommt. Verwenden Sie den Code 2 in Coroutine-Ausführungssequenz
, um dies zu erklären, wenn die Funktionen task1 und task2 gemeinsam genutzt werden Die MySQL-Verbindung und beide führen aufgrund der Coroutine-Ausführungssequenz Abfragen durch.
Die Prozesse laufen übergreifend ab, was dazu führen kann, dass Task1 die von Task1 + Task2 abgefragten Daten erhält, oder dass ein Teil der Daten verloren geht und von Task1 abgerufen wird Task2. Aufgrund des Cross-Running-Mechanismus müssen die von Task1 + Task2 abgefragten Daten unabhängig sein, daher müssen wir in jeder Coroutine eine Verbindung erstellen Da die Anzahl der MySQL- und Redis-Verbindungen begrenzt ist und das Öffnen und Schließen der Verbindung viele Ressourcen verbraucht, können wir die Verbindungspoollösung verwenden, um gemeinsam genutzte Verbindungen zu implementieren (solange jede Verbindung nur von einer Coroutine verwendet wird). Empfohlenes Lernen: Swoole-Tutorial
Das obige ist der detaillierte Inhalt vonOrganisieren Sie Swoole-Wissenspunkte im Detail (Zusammenfassungsfreigabe).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!