以下由workerman使用教學欄位來介紹PHP中的幾個運行模式,希望對需要的朋友有幫助!
我們知道 workerman 程式需要在php-cli模式下執行,也就是命令列模式,這塊我們有必要了解一下。話說PHP當下共有4種運作模式,分別是CGI、FastCGI、CLI和Web模組模式。
CGI
全名為「通用網關介面」(Common Gateway Interface), 它可以讓一個客戶端,從網頁瀏覽器向執行在Web伺服器上的程式請求數據,描述的是客戶端和這個程式之間傳輸資料的一種標準,另外CGI獨立於任何語言,所以可以用任何一種語言編寫,只要這種語言具有標準輸入、輸出和環境變數。如php,perl,tcl等。
CGI針對每個使用者請求都要開單獨的子進程去維護,所以數量多的時候會出現效能問題,最近幾年很少用。
FastCGI
CGI的升級版本,FastCGI 像是常駐(long-live) 型的CGI,它可以一直執行著,只要啟動後,不會每次都要花時間去解析php.ini、重新載入全部dll擴充並重初始化全部資料結構。
PHP使用PHP-FPM(FastCGI Process Manager),全名為PHP FastCGI進程管理器進行管理。
FastCGI工作原理
##Web Server啟動時載入FastCGI進程管理器;FastCGI進程管理器本身初始化,啟動多個CGI解釋器進程並等待來自Web Server的連線;當客戶端請求到達Web Server時,FastCGI進程管理器選擇並連接到一個CGI解釋器。 Web server將CGI環境變數和標準輸入傳送到FastCGI子進程php-cgi。 FastCGI子進程完成處理後將標準輸出和錯誤訊息從相同連線傳回Web Server。當FastCGI子程序關閉連線時,請求便告處理完成。 FastCGI子進程接著等待並處理來自FastCGI進程管理器的下一個連線。 在正常的CGI模式中,這就結束了,下次還要重新來過。但是在FastCGI,所有這些都只在進程啟動時發生一次。一個額外的好處是,持續資料庫連線(Persistent database connection)可以運作。Cli
PHP-CLI是PHP Command Line Interface的簡稱,就是PHP在命令列運行的接口,區別於在Web伺服器上運行的PHP環境( PHP-CGI等)。 我們在Linux下經常使用”php –m”查找PHP安裝了那些擴充功能就是PHP命令列運行模式。你可以打入 php -h 來看看具體都有什麼指令。 在php-cli模式下我們可以直接啟動一個php檔案並執行,就像workerman中一樣php index.php start
Module載入
一般是針對apache而言的,這種方式,他們的共同本質都是用LoadModule 來載入phpX_module,就是把php當作apache的一個子模組來運作。當透過web存取php檔案時,apache就會呼叫phpX_module來解析php程式碼,那麼phpX_module是怎麼來將資料傳給php解析器來解析php程式碼的呢?答案是透過sapi。 所以,以上的apache呼叫php執行的過程如下:apache -> httpd -> php5_module -> sapi -> php
小結
如果要建置一個高效能的PHP WEB伺服器,目前最佳的方式是Apache/Nginx FastCGI PHP-FPM( PHP-CGI)方式了,不要再使用Module載入或CGI 方式啦以上是workerman之小談PHP中的幾種運作模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!