當前位置:首頁 » 編程語言 » php解釋器

php解釋器

發布時間: 2025-05-27 05:01:51

1. php-fpm比php成為apache模塊好在哪

概述
寫這篇文章的是因為今天要Ubuntu下搭建LNMP環境,Nginx使用的是PHP-FPM,所以對Web伺服器與PHP解釋器的交互方式做了個整理。
眾所周知,PHP是跨平台、跨伺服器的語言,這也是它如此流行的原因之一。但是,很少有人知道PHP解釋器可以以不同的方式運行在Web伺服器中。PHP最常用的方式是以模塊的方式(mod_php)運行在Apache中,也是Apache運行PHP的默認方式。但是在Nginx中,Nginx又使用的是PHP-FPM。
這篇文章就對這些概念做個介紹,如有不對的地方,請多多批評指教。
什麼是PHP處理器(PHP handlers)?
首先需要記住的是,任何一種Web伺服器(Apache、Nginx等)都是被設計成向用戶發送html、圖片等靜態資源的,Web伺服器自身並不能解釋任何動態腳本(PHP、Python等)。PHP處理器就是用來解釋Web應用中的PHP代碼,並將它解釋為HTML或其他靜態資源,然後將解析的結果傳給Web伺服器,最後再由Web伺服器發送給用戶。大多數的Web伺服器都不能解析PHP代碼,因此它需要一個能解析PHP代碼的程序,這就是PHP處理器。
mod_php
首先,來看一下以Apache模塊方式運行PHP。mod_php現在在Linux各版本的軟體倉庫里都有,因此很容易被安裝。
當PHP以模塊的方式運行在Apache中時,PHP解釋器被「內嵌」在Apache的進程里。Apache不會調用任何外部的PHP進程,因此這種方式使Apache與PHP能更好的通信。但是,當以這種方式運行PHP的時候,哪怕Apache提供的僅僅是靜態的資源(如HTML),Apache的每個子進程也都會載入 mod_php,導致了比正常情況下更多的內存開銷。
以這種方式運行的另一個缺點是,它僅能與Apache一起配合工作。另外,在小型的VPS和大型的網站中,這種方式也不合適,因為大型網站可能有很多靜態資源,而這些靜態資源是不需要PHP程序解釋的。
優點:
1.易於安裝和更新
2.容配置
缺點:
1.僅能與Apache一起工作
2.增加了Apache子進程內存開銷
3.當更改php.ini文件後,需要重啟Apache
FastCGI
FastCGI是交互程序與Web伺服器通用的協議介面,是早期CGI(Common Gateway Interface)的一個變種。相對於CGI來說,FastCGI減少了和Web伺服器交互的開銷,同時一次可以處理更多的請求。
Apache可以以mod_fcgid的形式使用FastCGI。其他Web伺服器,如lighttpd, nginx, Cherokee,甚至微軟的IIS也都能使用FastCGI。使用FastCGI,可以同時設置多個版本的PHP,這在某些情況下非常有用。
FastCGI還利用suexec來支持不同的用戶用自己的PHP的實例。這個特性對於在共享環境下提高安全性尤其重要。FastCGI在保證性能的同時,也減少了Web伺服器的內存開銷。
優點:
1.兼容多數Web伺服器
2.比mod_php占內存小
3.更多的配置項,包括多版本PHP和suexec
缺點
1.配置復雜
2.不被大家所熟知
PHP-FPM(FastCGI Process Manager)
PHP-FPM是Web伺服器使用PHP的一種最新方式,也是PHP FastCGI的另外一種實現。PHP-FPM對於運行在小型VPS和多伺服器上的Web應用非常應用。同時,它也可以被兼容FastCGI的任何Web伺服器所使用。
PHP-FPM使管理員能夠優雅地停止和啟動PHP工作進程而不丟失任何查詢。這允許我們逐步更新配置和二進制,而不會損失任何查詢。它還允許我們在發生任何意外破壞的情況下,緊急重啟進程。
優點:
1.兼容多數Web伺服器
2.比mod_php占內存小
3.更多的配置項,包括多版本PHP和suexec
缺點
1.配置復雜
2.不被大家所熟知
補充:Apache運行PHP的四種方式
mod_php (DSO,Dynamic Shared Object)
CGI
suPHP
FastCGI
總結
內容相對抽象,理解的不深,記錄下留作以後參考~:)

2. php怎麼運行

PHP代碼通常在伺服器端運行,通過Web伺服器軟體(如Apache、Nginx等)與PHP解釋器(如PHP-FPM、PHP-CGI等)的結合來執行。

PHP是一種腳本語言,特別適用於Web開發。與編譯型語言不同,PHP是解釋型語言,這意味著它不需要預先編譯成可執行文件,而是由解釋器在運行時逐行讀取並執行代碼。為了運行PHP代碼,需要幾個關鍵組件的協同工作。

首先,你需要一個Web伺服器軟體,如Apache或Nginx。這些伺服器軟體負責處理HTTP請求,並返回相應的響應。當請求的資源是一個PHP文件時,Web伺服器會將這個請求轉發給PHP解釋器處理。

其次,PHP解釋器是執行PHP代碼的關鍵。PHP解釋器可以是以模塊形式集成在Web伺服器中,如Apache的mod_php模塊,也可以是獨立的進程,如PHP-FPM(FastCGI Process Manager)或PHP-CGI。這些解釋器接收來自Web伺服器的PHP代碼,對其進行解析和執行,並將結果返回給Web伺服器。

舉個例子,當你在瀏覽器中訪問一個以.php結尾的URL時,Web伺服器會接收到這個請求。如果伺服器配置正確,它會識別出這是一個PHP文件,並將請求轉發給PHP解釋器。解釋器隨後讀取該文件中的PHP代碼,逐行執行,並根據代碼生成相應的HTML輸出。這個HTML輸出隨後被返回給Web伺服器,再由伺服器發送回你的瀏覽器。這樣,你就能看到由PHP動態生成的網頁內容了。

總的來說,PHP的運行依賴於Web伺服器軟體和PHP解釋器的緊密配合。通過正確配置這兩者,你就能順利地在伺服器端執行PHP代碼,從而創建出動態、互動式的Web應用。

3. PHP CLI模式開發詳解

PHP CLI模式開發詳解

PHP CLI模式是一種無需Web伺服器的運行方式,適用於腳本自動化、命令行工具開發等多種場合。以下是PHP CLI模式開發的詳細解析:

  1. 運行方式

    • 使用腳本路徑調用PHP CLI解釋器
      • 通過命令行指定PHP文件的路徑來運行腳本,如php /path/to/yourFile.php。
      • 此方法需要明確知道PHP解釋器的安裝位置。
    • 為文件設置可執行許可權
      • 在UNIX/Linux環境中,使用chmod +x命令將PHP文件設置為可執行。
      • 在腳本頭部添加#! /usr/bin/php聲明,然後可以直接在命令行執行該腳本。
  2. 命令行參數處理

    • 在CLI模式下,可以通過$_SERVER['argv']和$_SERVER['argc']全局變數來獲取命令行參數。
    • $_SERVER['argv']是一個數組,包含傳遞給腳本的參數列表。
    • $_SERVER['argc']是一個整數,表示傳遞給腳本的參數個數。
  3. 輸入輸出處理

    • CLI模式遵循UNIX系統設計,使用STDIN、STDOUT和STDERR三個文件句柄進行輸入輸出。
    • STDIN用於接收用戶輸入。
    • STDOUT用於向屏幕輸出信息,也可以重定向到文件。
    • STDERR用於輸出錯誤信息,同樣可以重定向。
  4. 後台運行與日誌記錄

    • 使用nohup命令可以在後台運行CLI腳本,即使退出當前會話,腳本也會持續運行。
    • 通過將腳本輸出重定向到文件,可以保存腳本的執行結果。
    • 使用tail命令可以實時查看日誌文件的內容。
  5. 應用場景示例

    • 可以編寫一個持續生成靜態HTML文件的腳本,如cliPHP3.php,利用CLI模式的強大功能實現自動化生成和更新網頁內容。
  6. 學習資源

    • 更多關於PHP CLI模式開發的知識和資源,可以通過關注公眾號「PHP開源社區」或訪問相關鏈接獲取。這些資源包括進階文檔、架構視頻、精彩文章等,有助於深入了解和掌握PHP CLI模式的開發技巧。
熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:535
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:31
linux485 發布:2025-07-05 14:38:28 瀏覽:310
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:760
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:436
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:730
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:247
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:696
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:288
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:837