Laravel ist eines der beliebtesten PHP-Frameworks, das die Webentwicklung effizient und angenehm macht. Als Entwickler haben Sie wahrscheinlich den Befehl php artisan servo verwendet, um schnell einen lokalen Entwicklungsserver zu starten. Aber haben Sie sich jemals gefragt, was hinter den Kulissen passiert, wenn Sie diesen Befehl ausführen? Lassen Sie uns dies Schritt für Schritt im Detail untersuchen, verstehen, wie Laravel den ServeCommand identifiziert und ausführt, und uns damit befassen, was der integrierte Server von PHP ist und wie er im Vergleich zu herkömmlichen Webservern wie Nginx oder Apache abschneidet.
Was ist PHP Artisan Serve?
Der PHP-Artisan-Serve-Befehl ist eine Laravel-Funktion, die einen lokalen Webserver für Ihr Projekt startet. Es nutzt den integrierten PHP-Server, um Ihre Laravel-Anwendung während der Entwicklung unter einer bestimmten Adresse (z. B. http://127.0.0.1:8000) zugänglich zu machen.
Dieser Befehl ist besonders nützlich für die lokale Entwicklung, da dafür kein vollwertiger Webserver wie Nginx oder Apache eingerichtet werden muss.
Schritt-für-Schritt-Anleitung: Was passiert, wenn Sie PHP Artisan Serve ausführen?
1. Der Benutzer führt den Befehl aus
Wenn Sie im Terminal „php artisan Serve“ eingeben, wird die Artisan Console von Laravel, ein Befehlszeilentool für Laravel, in Aktion gesetzt. Es ist wie eine Toolbox mit verschiedenen Befehlen, die beim Erstellen, Testen und Ausführen von Laravel-Anwendungen helfen.
2. Artisan-Einstiegspunkt
- Die Artisan-Datei im Stammverzeichnis Ihres Projekts fungiert als Einstiegspunkt für alle Artisan-Befehle.
- Wenn Sie PHP Artisan Serve ausführen, führt die Artisan-Datei Folgendes aus:
- Enthält den Autoloader von Composer (vendor/autoload.php).
- Bootstrapt das Laravel-Framework mit bootstrap/app.php.
3. Artisan findet den ServeCommand
- Laravel registriert alle Artisan-Befehle, wenn die Anwendung startet. Für integrierte Befehle wie Serve registriert Laravel sie im IlluminateFoundationProvidersArtisanServiceProvider.
- Dieser Anbieter ordnet den Befehlsnamen (serve) der entsprechenden Klasse (IlluminateFoundationConsoleServeCommand) zu.
4. Befehlsauflösung und automatisches Laden
- Der ServeCommand befindet sich im Verzeichnis seller/laravel/framework unter dem Namensraum IlluminateFoundationConsole.
- Laravel verwendet die PSR-4-Autoloading-Konfiguration von Composer, um die Klasse zu finden und zu laden.
- Dadurch kann die ServeCommand-Klasse geladen werden, ohne dass das vollständige Laravel-Framework noch vollständig initialisiert ist.
5. Vorbereiten des Servers
- Der ServeCommand konfiguriert den in PHP integrierten Server:
- Host: Standard ist 127.0.0.1 (localhost).
- Port: Der Standardwert ist 8000 (oder ein benutzerdefinierter Wert über die Option --port).
- Dokumentstammverzeichnis: Zeigt auf das öffentliche Verzeichnis, in dem sich die Eintragsdatei von Laravel (index.php) befindet.
- Intern führt der Befehl Folgendes aus:
php -S 127.0.0.1:8000 -t public server.php
Nach dem Login kopieren
-
php -S Startet den integrierten PHP-Server.
-
-t public Gibt das Dokumentstammverzeichnis an.
-
server.php: Eine Router-Datei zur Verarbeitung dynamischer Anfragen.
6. Bearbeitung von Anfragen
- Die Datei server.php fungiert als Router:
- Wenn die angeforderte Datei (z. B. CSS, JS) vorhanden ist, wird sie direkt bereitgestellt.
- Ansonsten werden Anfragen an index.php weitergeleitet.
7. Laravel verarbeitet die Anfrage
- Die Datei index.php initialisiert das Framework von Laravel und verarbeitet eingehende HTTP-Anfragen.
- Es leitet die Anfrage an den entsprechenden Controller weiter, verarbeitet die Logik und generiert eine Antwort (z. B. HTML oder JSON).
8. Die Antwort wird zurückgesendet
Die Laravel-Antwort wird an den in PHP integrierten Server zurückgesendet, der sie dann an den Browser übermittelt.
Was ist der integrierte Server von PHP?
Der integrierte Server von PHP ist ein einfacher Entwicklungsserver, der in PHP 5.4 eingeführt wurde. Es soll Entwicklern helfen, Anwendungen zu testen, ohne einen vollständigen Webserver installieren oder konfigurieren zu müssen.
Funktionen des integrierten PHP-Servers:
- Benutzerfreundlichkeit: Starten Sie es mit einem einzigen Befehl (php -S).
- Dynamische und statische Dateien: Stellt sowohl PHP-Skripte als auch statische Dateien wie Bilder oder Stylesheets bereit.
- Benutzerdefiniertes Routing: Ermöglicht die benutzerdefinierte Verarbeitung von Anfragen über ein Router-Skript (wie server.php von Laravel).
Vergleich: PHP Built-In Server vs. Nginx/Apache
- Zweck: Der integrierte PHP-Server dient nur Entwicklungszwecken. Nginx/Apache ist sowohl für die Produktionsreife als auch für die Entwicklung geeignet.
- Leistung: Der in PHP integrierte Server ist Single-Threaded (jeweils eine Anfrage) und Nginx/Apache ist Multi-Threaded (verarbeitet viele Anfragen gleichzeitig)
- Konfiguration: Der in PHP integrierte Server erfordert nur eine minimale Einrichtung. nginx/Apache benötigt Konfigurationsdateien.
- Erweiterte Funktionen: Der integrierte PHP-Server ist eingeschränkt (z. B. kein Caching). Nignx/Apache kann für Caching, Lastausgleich und mehr verwendet werden.
Diese Einrichtung ist zwar praktisch, aber nur für die Entwicklung gedacht. Für Live-Anwendungen bieten Webserver wie Nginx oder Apache die Skalierbarkeit und Leistung, die für die Verarbeitung des Produktionsverkehrs erforderlich sind.
P.S. Es ist für mich immer interessant zu erfahren, wie die Dinge hinter den Kulissen funktionieren. Dies hilft mir zu verstehen, was tatsächlich passiert, wenn ich eine Anwendung erstelle. Sie können meine anderen Artikel lesen.
Das obige ist der detaillierte Inhalt vonWas passiert, wenn Sie „php artisan Serve' in Laravel ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!