首頁 >後端開發 >php教程 >當你在 Laravel 中運行'php artisanserve”時會發生什麼?

當你在 Laravel 中運行'php artisanserve”時會發生什麼?

Barbara Streisand
Barbara Streisand原創
2024-12-05 18:50:10901瀏覽

What Happens When You Run “php artisan serve” in Laravel?

Laravel 是最受歡迎的 PHP 框架之一,它使 Web 開發變得高效且愉快。身為開發人員,您可能使用過 php artisanserve 指令來快速啟動本機開發伺服器。但是您有沒有想過當您執行此命令時幕後會發生什麼?讓我們一步步詳細探討這一點,了解 Laravel 如何識別和運行 ServeCommand,並深入了解 PHP 的內建伺服器是什麼以及它與 Nginx 或 Apache 等傳統 Web 伺服器的比較。

什麼是 php artisan 服務?

php artisanserve 指令是 Laravel 的一項功能,可為您的專案啟動本機 Web 伺服器。它使用 PHP 的內建伺服器使您的 Laravel 應用程式在開發過程中可以透過特定位址(例如 http://127.0.0.1:8000)存取。

此命令對於本機開發特別有用,因為它不需要設定像 Nginx 或 Apache 這樣成熟的 Web 伺服器。

逐步過程:運行 php artisanserve 時會發生什麼?

1。使用者執行指令
當您在終端機中輸入 php artisanserve 時,Laravel 的 Artisan Console(Laravel 的命令列工具)就會啟動。它就像一個包含各種命令的工具箱,可幫助建置、測試和運行 Laravel 應用程式。

2。工匠入口點

  • 專案根目錄中的 artisan 檔案充當所有 Artisan 指令的入口點。
  • 當您執行 php artisanserve 時,artisan 檔案會執行以下操作:
  1. 包含 Composer 的自動載入器 (vendor/autoload.php)。
  2. 使用 bootstrap/app.php 引導 Laravel 框架。

3。 Artisan 找到 ServeCommand

  • Laravel 在應用程式啟動時註冊所有 Artisan 命令。對於像服務這樣的內建指令,Laravel 將它們註冊到 IlluminateFoundationProvidersArtisanServiceProvider 中。
  • 此提供者將命令名稱(serve)對應到其對應的類別(IlluminateFoundationConsoleServeCommand)。

4. 命令解析與自動載入

  • ServeCommand 位於命名空間 IlluminateFoundationConsole 下的供應商/laravel/framework 目錄中。
  • Laravel 使用 Composer 的 PSR-4 自動載入組態來定位和載入類別。
  • 這允許載入 ServeCommand 類,而無需完全初始化完整的 Laravel 框架。

5. 準備伺服器

  • ServeCommand 設定 PHP 內建伺服器:
  • 主機:預設為 127.0.0.1 (localhost)。
  • 連接埠:預設為 8000(或透過 --port 選項自訂)。
  • 文檔根目錄:指向Laravel入口文件(index.php)所在的公共目錄。
  • 在內部,指令執行:
php -S 127.0.0.1:8000 -t public server.php
  • php -S 啟動 PHP 的內建伺服器。
  • -t public 指定文檔根目錄。
  • server.php:處理動態請求的路由器檔案。

6. 處理請求

  • server.php 檔案充當路由器:
  • 如果請求的檔案(例如CSS、JS)存在,則直接提供。
  • 否則,請求將轉發到index.php。

7.Laravel 處理請求

  • index.php 檔案初始化 Laravel 的框架並處理傳入的 HTTP 請求。
  • 它將請求路由到適當的控制器,處理邏輯,並產生回應(例如 HTML 或 JSON)。

8. 回應被發回

Laravel 回應被傳送回 PHP 內建伺服器,然後傳遞給瀏覽器。

PHP 內建的伺服器是什麼?

PHP的內建伺服器是PHP 5.4中引入的一個簡單的開發伺服器。它旨在幫助開發人員測試應用程序,而無需安裝或配置完整的 Web 伺服器。

PHP內建伺服器的特性:

  • 易於使用:使用單一命令 (php -S) 啟動它。
  • 動態和靜態檔案:提供 PHP 腳本和靜態檔案(例如圖片或樣式表)。
  • 自訂路由:允許透過路由器腳本(如 Laravel 的 server.php)自訂處理請求。

比較:PHP 內建伺服器與 Nginx/Apache

  • 用途:PHP 內建伺服器僅用於開發目的。 Nginx/Apache 適用於生產就緒和開發。
  • 效能:PHP內建伺服器是單一執行緒的(一次一個請求),Nginx/Apache是​​多執行緒的(同時處理多個請求)
  • 設定:PHP 內建伺服器需要最少的設定。 nginx/Apache 需要設定檔。
  • 進階功能:PHP 內建伺服器是有限的(例如,沒有快取)。 Nignx/Apache 可用於快取、負載平衡等。

雖然此設定很方便,但它僅用於開發。對於即時應用程序,Nginx 或 Apache 等 Web 伺服器提供處理生產流量所需的可擴充性和效能。

P.S.我總是對了解幕後的運作方式感興趣。這有助於我了解建立應用程式時實際發生的情況。你可以閱讀我的其他文章。

以上是當你在 Laravel 中運行'php artisanserve”時會發生什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn