PHP ist eine Server-Skriptsprache und eine interpretierte Sprache. Es wird häufig bei der Erstellung kleiner und mittlerer Websites verwendet. Es ist nicht so schwer wie Java und lässt sich schneller entwickeln. Aber wie wird diese Skriptsprache vom Server analysiert?
Wir alle wissen, dass PHP in HTML eingebettet werden kann, aber das Suffix der Datei muss mit .php enden. Wenn es sich um .html handelt, wird der PHP-Codeausschnitt direkt vom Browser kommentiert Keine Demonstration mehr, schauen wir uns unten ein Beispiel an:
#test1.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>test</title> </head> <body> <?php echo "我是一段PHP脚本"; ?> </body> </html>
Das Ergebnis beim Zugriff über den Browser nach der Verwendung von PHPstudy:
Dies ist ein Absatz Sehr einfacher Code. Wir können sehen, dass der Server das analysierte Ergebnis direkt an den Browser weitergibt. Wenn der Server tatsächlich feststellt, dass das angeforderte Ressourcensuffix .php ist, ruft er den PHP-Parser auf, um ihn zu analysieren und auszuführen PHP-Code im Inneren. Dann antwortet die Ressource dem Client. Hier kommt also der Punkt: Wie wird PHP-Code analysiert? Zunächst müssen wir die verwandten Konzepte von CGI, FastCGI und PHP-FPM verstehen.
Verwandte Empfehlungen: „php-Einführungs-Tutorial“
Was ist CGI?
cgi (Common Gateway Interface) ist eigentlich ein Protokoll. Das Programm, das das CGI-Protokoll implementiert, kann als CGI-Programm bezeichnet werden, das mit dem Browser interagieren und auch über die Datenbank-API kommunizieren kann Datenquellen wie Datenbankserver und beziehen Daten von den Datenbankservern. Nach der Formatierung in ein HTML-Dokument wird es an den Browser gesendet, oder die vom Browser erhaltenen Daten können in die Datenbank eingegeben werden. Und php-cgi ist ein Protokoll zum Parsen von PHP-Code. Diese Vereinbarung hat jedoch mehrere Nachteile. Jedes Mal, wenn der Client eine PHP-Skriptdatei anfordert, forkt der Server zunächst einen Prozess auf und ruft den Parser auf, um das Skript zu analysieren. Wenn das Skript ausgeführt wird, wird der Prozess beendet und jeder Fork-Prozess wird über PHP ausgeführt. ini, um die Umgebung zu initialisieren. Der Prozess kann nicht wiederverwendet werden und der E/A-Overhead von php.ini wird erhöht. Begrenzt die Ausführungsgeschwindigkeit von PHP. Also entwickelte der intelligente PHP-Anbieter ein besseres CGI-Protokoll, nämlich das FastCGI-Protokoll, das später herauskam.
FastCGI-Protokoll
Gu Ming dachte, schnelleres CGI-Protokoll. Wo ist er also bald?
Fastcg löst zunächst die Probleme des ursprünglichen PHP-CGI. Es ermöglicht die Verarbeitung mehrerer Anforderungen in einem Prozess, anstatt den Prozess direkt nach der Verarbeitung einer Anforderung zu beenden den Webserver verbessern. Tatsächlich startet Fastcgi zunächst einen Master, analysiert die Konfigurationsdatei, initialisiert die Ausführungsumgebung und startet dann mehrere Worker. Wenn eine Anfrage eingeht, leitet der Master diese an einen Worker weiter und kann die nächste Anfrage sofort annehmen. Das vermeidet Doppelarbeit und ist natürlich hocheffizient. Und wenn nicht genügend Arbeiter vorhanden sind, kann der Master je nach Konfiguration mehrere Arbeiter vorab starten und warten. Wenn zu viele Arbeiter im Leerlauf sind, werden natürlich einige gestoppt, was die Leistung verbessert und Ressourcen spart.
php-fpm
PHP-FPM (FastCGI Process Manager: FastCGI Process Manager) ist ein PHPFastCGI-Manager für PHP vor 5.3.3. Für PHP, Es handelt sich um ein Patch-Paket, das die FastCGI-Prozessverwaltung in das PHP-Paket integrieren soll. Wenn Sie PHP vor PHP5.3.3 verwenden, müssen Sie es in Ihren PHP-Quellcode patchen und können es nach dem Kompilieren und Installieren von PHP verwenden. Tatsächlich können wir uns php-fpm als einen Interpreter vorstellen. Wir können den Befehl ps -aux | verwenden, um den entsprechenden Prozessstatus anzuzeigen, wie unten gezeigt:
Mit php-fpm können allgemeine Änderungen reibungslos neu gestartet werden Nach php.ini kann der php-cgi-Prozess nicht reibungslos neu gestartet werden, was bedeutet, dass Sie den Dienst neu starten müssen, um die neue Konfiguration neu zu laden. Der PHP-FPM-Verarbeitungsmechanismus hierfür besteht darin, dass neue Arbeiter neue Konfigurationen verwenden und bestehende Arbeiter sich nach der Verarbeitung der anstehenden Arbeit ausruhen können. Dieser Mechanismus wird verwendet, um den Übergang zu erleichtern.
但是传统的php-fpm的worker是同步阻塞的,这在一定程度下也限制了程序的运行速度,并且普通的PHP是无法常驻内存的,也就意味着我们每次执行代码都需要将相同的东西重新加载到新内存去,这点跟java的servlet就不同了,java的servlet在用户访问后实例化,下一个用户就不会再次进行实例化。为了解决这些问题,强大的Rango写出了swoole拓展,swoole和fpmd的进程模型是相同的,manager都是负责管理子进程的创建和回收。但php-fpm的worker进程是同步阻塞的,swoole的worker进程是异步非阻塞的。并且swoole的http-server和fpm的差异是http-server是内存常驻的,PHP程序变成长生命周期的了。变量和对象在使用请求结束后并不会销毁,可以复用。这也就是为什么我们说swoole开启了PHP的新世界。
我们可以用简单的几句就可以创建一个异步非阻塞的http-server甚至是http2协议的server。例如:
$http = new swoole_http_server("127.0.0.1", 9501); $http->on('request', function ($request, $response) { $response->end("<h1 id="Hello-nbsp-Swoole-nbsp-rand-nbsp">Hello Swoole. #".rand(1000, 9999)."</h1>"); }); $http->start();
swoole的高性能体现在它是一个纯c编写的拓展,并且使用了全内存缓存和异步IO。使得它相对于Node.js默认是单线程的无法利用全部CPU,Golang的协程调度本身有一定性能消耗相比,有着更加不错的性能。
用图解析一波,php-fpm是这样的(图片来源于网络):
而swoole的http-server是这样的(这里的cache应该理解成框架初始化环境所使用的内存):
Das obige ist der detaillierte Inhalt vonWas wird PHP zum Parsen verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Der Artikel vergleicht Säure- und Basisdatenbankmodelle, wobei die Eigenschaften und angemessene Anwendungsfälle beschrieben werden. Säure priorisiert die Datenintegrität und -konsistenz, geeignet für finanzielle und E-Commerce-Anwendungen, während sich die Basis auf die Verfügbarkeit konzentriert und

In dem Artikel wird das Sicherung von PHP -Dateien -Uploads erläutert, um Schwachstellen wie die Code -Injektion zu verhindern. Es konzentriert sich auf die Dateitypvalidierung, den sicheren Speicher und die Fehlerbehandlung, um die Anwendungssicherheit zu verbessern.

In Artikel werden Best Practices für die Validierung der PHP-Eingabe erörtert, um die Sicherheit zu verbessern und sich auf Techniken wie die Verwendung integrierter Funktionen, den Whitelist-Ansatz und die serverseitige Validierung zu konzentrieren.

In dem Artikel werden Strategien zur Implementierung der API-Rate in PHP erörtert, einschließlich Algorithmen wie Token-Bucket und Leaky Bucket sowie Bibliotheken wie Symfony/Rate-Limiter. Es deckt auch die Überwachung, die dynamischen Einstellungsgeschwindigkeiten und die Hand ab

Der Artikel beschreibt die Vorteile der Verwendung von Password_hash und Passage_verify in PHP zum Sichern von Passwörtern. Das Hauptargument besteht

In dem Artikel werden OWASP Top 10 Schwachstellen in PHP- und Minderungsstrategien erörtert. Zu den wichtigsten Problemen gehören die Injektion, die kaputte Authentifizierung und XSS mit empfohlenen Tools zur Überwachung und Sicherung von PHP -Anwendungen.

In dem Artikel werden Strategien erörtert, um XSS-Angriffe in PHP zu verhindern, sich auf die Eingabe von Eingaben, die Ausgabecodierung und die Verwendung von Bibliotheken und Frameworks für Sicherheitsförderungen zu konzentrieren.

In dem Artikel wird die Verwendung von Schnittstellen und abstrakten Klassen in PHP erörtert und konzentriert sich darauf, wann sie jeweils verwendet werden sollen. Schnittstellen definieren einen Vertrag ohne Implementierung, der für nicht verwandte Klassen und multiple Vererbung geeignet ist. Abstrakte Klassen liefern eine gemeinsame Funktion


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.