Heim >Backend-Entwicklung >PHP-Tutorial >Grundlegende Erklärung der Kommunikationsprotokolle und -prozesse und Threads in PHP

Grundlegende Erklärung der Kommunikationsprotokolle und -prozesse und Threads in PHP

不言
不言Original
2018-08-14 14:47:482074Durchsuche

Dieser Artikel bietet Ihnen eine grundlegende Erklärung der Kommunikationsprotokolle, Prozesse und Threads in PHP. Ich hoffe, dass er Ihnen als Referenz dienen wird.

Einige Grundlagen zu PHP zusammengestellt. Schauen Sie doch einfach mal vorbei.

Kommunikationsprotokoll

Das Netzwerkkommunikationsprotokoll ist eine universelle Netzwerksprache, die Kommunikationsunterstützung für miteinander verbundene Netzwerke bietet, die verschiedene Betriebssysteme und verschiedene Hardwarearchitekturen verbinden.

Anwendungsschicht

名称 注释
HTTP Hypertext Transfer Protocol 超文本传输协议,显示网页
DNS Domain Name System 域名系统
FTP File Transfer Protocol 文件传输协议
SFTP SSH File Transfer Protocol 安全文件传送协议
SSH Secure Shell

Kommunikationsschicht

名称 注释
TCP Transmission Control Protocol 三次握手传输协议
UDP

Netzwerkschicht

名称 注释
IP Internet Protocol
ICMP Internet Control Message Protocol,主要用于路由发送错误报告

HTTP

HTTP ist die Abkürzung für Hyper Text Transfer Protocol. Seine Entwicklung ist das Ergebnis der Zusammenarbeit zwischen dem World Wide Web Consortium und der Internet Engineering Task Force (IETF), die schließlich eine Reihe von RFCs 1945 veröffentlichte, die die HTTP/1.0-Version definieren. Das bekannteste davon ist RFC 2616. RFC 2616 definiert eine heute häufig verwendete Version – HTTP 1.1.

HTTP-Protokoll (HyperText Transfer Protocol, Hypertext Transfer Protocol) ist ein Übertragungsprotokoll, das zur Übertragung von Hypertext vom WWW-Server an den lokalen Browser verwendet wird. Es kann den Browser effizienter machen und die Netzwerkübertragung reduzieren. Es stellt nicht nur sicher, dass der Computer Hypertextdokumente korrekt und schnell überträgt, sondern bestimmt auch, welcher Teil des Dokuments übertragen wird und welcher Teil des Inhalts zuerst angezeigt wird (z. B. Text vor Grafiken) usw.

HTTP ist ein Protokoll der Anwendungsschicht, das aus Anfragen und Antworten besteht und ein Standard-Client-Server-Modell ist. HTTP ist ein zustandsloses Protokoll.

Position im TCP/IP-Protokollstapel

Das HTTP-Protokoll wird normalerweise über dem TCP-Protokoll und manchmal auch über der TLS- oder SSL-Protokollschicht übertragen wird bei uns oft als HTTPS bezeichnet. Wie in der Abbildung unten gezeigt

Grundlegende Erklärung der Kommunikationsprotokolle und -prozesse und Threads in PHP

Die Standard-HTTP-Portnummer ist 80 und die HTTPS-Portnummer ist 443.

HTTP-Request-Response-Modell

Das HTTP-Protokoll initiiert immer eine Anfrage vom Client und sendet eine Antwort vom Server zurück. Siehe das Bild unten

Grundlegende Erklärung der Kommunikationsprotokolle und -prozesse und Threads in PHP

Dies schränkt die Verwendung des HTTP-Protokolls ein und kann keine Nachrichten an den Client senden, wenn der Client keine Anfrage initiiert.
Das HTTP-Protokoll ist ein zustandsloses Protokoll. Es gibt keine Übereinstimmung zwischen dieser Anfrage und der letzten Anfrage desselben Clients.

HTTP-Anfrage

Die vom Client an den Server gesendete Anforderungsnachricht enthält das folgende Format:

  • Anforderungszeile

  • Anfragekopf

  • Er besteht aus vier Teilen: Leerzeile und Anfragedaten.

Anfragebeispiel abrufen

GET /562f25980001b1b106000338.jpg HTTP/1.1Host img.mukewang.comUser-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36Accept image/webp,image/*,*/*;q=0.8Referer http://www.imooc.com/Accept-Encoding gzip, deflate, sdchAccept-Language zh-CN,zh;q=0.8

POST-Anfragebeispiel

POST / HTTP1.1Host:www.wrox.comUser-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)Content-Type:application/x-www-form-urlencodedContent-Length:40Connection: Keep-Alivename=Professional%20Ajax&publisher=Wiley

Teil eins: Anforderungszeile, die erste Zeile zeigt den Anforderungstyp und die http1. 1 Version.
Teil 2: Anforderungsheader, Zeile 2 bis Zeile 6.
Der dritte Teil: Leerzeile, die Leerzeile der siebten Zeile.
Teil 4: Daten anfordern, Zeile 8.

HTTP-Antwort

Im Allgemeinen gibt der Server eine HTTP-Antwortnachricht zurück, nachdem er die Anfrage vom Client empfangen und verarbeitet hat.
HTTP-Antwort besteht ebenfalls aus vier Teilen

  • Statuszeile

  • Nachrichtenkopf

  • Leerzeile und Antworttext.

HTTP/1.1 200 OKDate: Fri, 22 May 2009 06:07:21 GMTContent-Type: text/html; charset=UTF-8<!--body goes here-->

Der erste Teil der Statuszeile: besteht aus drei Teilen: Versionsnummer des HTTP-Protokolls, Statuscode und Statusmeldung.
Der zweite Teil des Nachrichtenkopfes: wird verwendet, um einige zusätzliche Informationen zu beschreiben, die vom Client verwendet werden sollen
Der dritte Teil der Leerzeile: Die Leerzeile nach dem Nachrichtenkopf ist erforderlich
Der vierte Teil von Der Antworttext: Der Server kehrt zur Client-Textnachricht zurück.

HTTP-Statuscode

Der Statuscode besteht aus drei Ziffern. Die erste Zahl definiert die Antwortkategorie, die in fünf Kategorien unterteilt ist

状态 注释
1xx 指示信息--表示请求已接收,继续处理
2xx 成功--表示请求已被成功接收、理解、接受
3xx 重定向--要完成请求必须进行更进一步的操作
4xx 客户端错误--请求有语法错误或请求无法实现
5xx 服务器端错误--服务器未能实现合法的请求

Prozesse und Threads

Das Konzept des Prozesses ist die Grundlage der Struktur des Betriebssystems. Die Designer von Multics verwendeten diesen Fachbegriff erstmals in den 1960er Jahren und er ist allgemeiner als Hausaufgaben. In Bezug auf die Definition eines Prozesses lautet er wie folgt:

  • Ein ausführendes Programm.

  • Eine Instanz eines Programms, das auf einem Computer ausgeführt wird.

  • Eine Entität, die einem Prozessor zugewiesen und von diesem ausgeführt werden kann.

  • Eine Aktivitätseinheit, die durch einen einzelnen sequentiellen Ausführungsthread, einen aktuellen Status und eine Reihe verwandter Systemressourcen beschrieben wird.

Warum werden Prozesse entworfen?

Es ist sehr schwierig, eine Systemsoftware zu entwerfen, die verschiedene Aktivitäten koordinieren kann.

Es laufen viele Jobs gleichzeitig, und jeder Job umfasst viele Schritte, die nacheinander ausgeführt werden müssen, sodass es nicht möglich ist, Sequenzkombinationen von Zeiten zu analysieren. Da es keine Methode auf Systemebene für die Koordination und Zusammenarbeit aller Aktivitäten gibt, müssen Programmierer ihre eigenen Ad-hoc-Methoden anwenden, die auf ihrem Verständnis der vom Betriebssystem kontrollierten Umgebung basieren. Diese Methode ist jedoch sehr anfällig, insbesondere gegenüber kleinen Fehlern in der Programmierung, da diese Fehler nur dann auftreten, wenn seltene Zeitreihen auftreten.

Die Diagnose kann schwierig sein, da diese Fehler von Anwendungssoftwarefehlern und Hardwarefehlern unterschieden werden müssen. Auch die rechtzeitige Erkennung von Fehlern erschwert die Ermittlung der Ursache, da es schwierig ist, das genaue Szenario zu identifizieren, in dem der Fehler aufgetreten ist. Im Allgemeinen sind die 4 Hauptgründe für diese Art von Fehler wie folgt:

  • Falsche Synchronisierung

  • Fehlgeschlagener Mutex.

  • Unsicherer Programmbetrieb

  • Deadlock

Zur Lösung dieser Probleme ist ein System mit Level-Methoden erforderlich Überwachen Sie die Ausführung verschiedener Programme im Prozessor. Die Grundlage hierfür bildet der Prozessbegriff.

Der Prozess besteht also aus drei Teilen

  • Ein Programm, das ausgeführt werden kann

  • Was das Programm ist benötigt relevante Daten

  • Ausführungskontext des Programms

Erstellung eines Prozesses

Traditionell die Art und Weise, wie das Betriebssystem Prozesse erstellt ist für den Benutzer sehr schwierig und Anwendungen sind transparent, was auch bei modernen Betriebssystemen üblich ist. Es wäre jedoch sinnvoll, zuzulassen, dass ein Prozess die Erstellung eines anderen Prozesses auslöst.

Zum Beispiel kann ein Programmprozess einen anderen Prozess erzeugen, der von der Anwendung generierte Daten akzeptiert und die Daten in einem für die spätere Analyse geeigneten Format organisiert. Neue Prozesse laufen parallel zur Anwendung und werden aktiviert, wenn neue Daten verfügbar sind.

Dieses Schema ist sehr nützlich für die Strukturierung von Anwendungen. Beispielsweise kann ein Serverprozess (z. B. ein Druckserver, ein Dateiserver) für jede von ihm verarbeitete Anfrage einen neuen Prozess erzeugen. Wenn das Betriebssystem als Reaktion auf eine explizite Anfrage eines anderen Prozesses einen neuen Prozess erzeugt, wird diese Aktion als Prozessverzweigung bezeichnet.

Wenn ein Prozess einen anderen Prozess verzweigt, wird der erstere als übergeordneter Prozess und der verzweigte Prozess als untergeordneter Prozess bezeichnet. In einer typischen Situation erfordern verwandte Prozesse Kommunikation und Zusammenarbeit zwischen Agenten. Für Programmierer ist die Zusammenarbeit eine sehr schwierige Aufgabe.

Was ist ein Thread?

Ein Thread ist ein Ausführungsfluss eines Prozesses. Ein Thread kann keine Systemressourcen zuweisen. Er ist eine kleinere unabhängige laufende Einheit als der Prozess

Die Beziehung zwischen Prozessen und Threads

Ein Prozess ist wie ein Vermieter, der Land besitzt (Systemressourcen), und ein Thread ist wie ein Mieter (Thread, der den Landwirtschaftsprozess ausführt). Jeder Vermieter (Prozess) benötigt nur einen arbeitenden Mieter (Thread).

Prozess – die kleinste Einheit der Ressourcenzuweisung, relativ robust, Abstürze wirken sich im Allgemeinen nicht auf andere Prozesse aus, aber das Wechseln von Prozessen verbraucht Ressourcen und ist weniger effizient.

Thread – die kleinste Einheit der Programmausführung. Es gibt keinen unabhängigen Adressraum. Wenn ein Thread stirbt, kann der gesamte Prozess sterben, aber es spart Ressourcen und weist eine hohe Switching-Effizienz auf.

Gemeinsame Prozesse und Threads in PHP

  • In Webanwendungen erstellen wir jedes Mal, wenn wir auf PHP zugreifen, einen PHP-Prozess, und natürlich erstellen wir auch mindestens einen PHP-Thread

  • PHP verwendet pcntl für die Multiprozessprogrammierung

  • PHP verwendet pthreads für die Multithreadprogrammierung

  • Jeder Prozess von Nginx hat nur einen Thread, und jeder Thread kann den Zugriff mehrerer Clients verarbeiten

  • php-fpm verwendet ein Multiprozessmodell, und jeder Prozess hat nur einen ein Thread. Threads können nur einen Clientzugriff verarbeiten

  • Apache kann ein Multiprozessmodell oder ein Multithread-Modell verwenden, je nachdem, welche SAPI verwendet wird

Verwandte Empfehlungen:

Fünf Möglichkeiten zur Kommunikation zwischen AS3 und PHP (basierend auf dem HTTP-Protokoll)_PHP-Tutorial

Kommunikation zwischen PHP- und Linux-Prozessen

Http-Protokoll-Post-Request-Parameter in PHP, PHP-Protokoll-Post-Request_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonGrundlegende Erklärung der Kommunikationsprotokolle und -prozesse und Threads in PHP. 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