Heim >Backend-Entwicklung >PHP-Tutorial >Grundlegende Erklärung der Kommunikationsprotokolle und -prozesse und Threads in PHP
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.
Das Netzwerkkommunikationsprotokoll ist eine universelle Netzwerksprache, die Kommunikationsunterstützung für miteinander verbundene Netzwerke bietet, die verschiedene Betriebssysteme und verschiedene Hardwarearchitekturen verbinden.
名称 | 注释 |
---|---|
HTTP | Hypertext Transfer Protocol 超文本传输协议,显示网页 |
DNS | Domain Name System 域名系统 |
FTP | File Transfer Protocol 文件传输协议 |
SFTP | SSH File Transfer Protocol 安全文件传送协议 |
SSH | Secure Shell |
名称 | 注释 |
---|---|
TCP | Transmission Control Protocol 三次握手传输协议 |
UDP |
名称 | 注释 |
---|---|
IP | Internet Protocol |
ICMP | Internet Control Message Protocol,主要用于路由发送错误报告 |
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.
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
Die Standard-HTTP-Portnummer ist 80 und die HTTPS-Portnummer ist 443.
Das HTTP-Protokoll initiiert immer eine Anfrage vom Client und sendet eine Antwort vom Server zurück. Siehe das Bild unten
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.
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.
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.
Der Statuscode besteht aus drei Ziffern. Die erste Zahl definiert die Antwortkategorie, die in fünf Kategorien unterteilt ist
状态 | 注释 |
---|---|
1xx | 指示信息--表示请求已接收,继续处理 |
2xx | 成功--表示请求已被成功接收、理解、接受 |
3xx | 重定向--要完成请求必须进行更进一步的操作 |
4xx | 客户端错误--请求有语法错误或请求无法实现 |
5xx | 服务器端错误--服务器未能实现合法的请求 |
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.
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
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.
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
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.
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:
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!