PHP介紹和Apache的Module、CGI與FastCGI

  靜態網站是指全部由HTML標準通用標記語言的子集)代碼格式頁面組成的網站,所有的內容包含在網頁文件中。網頁上也可以出現各種視覺動態效果,如GIF動畫、FLASH動畫、滾動字幕等,而網站主要是靜態化的頁面和代碼組成,一般文件名均以htmhtmlshtml等爲後綴。

  動態網站是指通過網頁程序語言編寫,當客戶請求時執行網頁程序腳本,將程序執行的結果返回給客戶端。PHP、JSP、ASP等等都是比較常見的動態網頁程序。

  PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言語法吸收了C語言JavaPerl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了CJavaPerl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密優化代碼運行,使代碼運行更快。  --百度百科


  PHP的Zend引擎將整個PHP執行分爲兩個階段:

  1.分析PHP代碼將其轉換爲Zend Opcode格式,並存儲在內存中
  2.之後執行這些轉換後的opcode(opcode是一種將PHP腳本編譯後的中間語言,可以加快php的執行速度)

  Zend引擎執行PHP代碼的具體流程如下:

  1.掃描--將PHP代碼轉換爲語言片段(Tokens)

  2.分析--將Tokens轉換成簡單而有意義的表達式

  3.編譯--將表達式編譯成opcode

  4.執行--順次執行opcode,每次一條


PHP結合Apache的方式有三種:

  1. 作爲模塊:PHP作爲Apache的模塊,當有php頁面的請求時,Apache加載php模塊,加載資源並執行php程序,將執行結果返還給客戶端。

  2. CGI方式(注:CGI是一個協議,可以實現web服務程序和解釋器通信):PHP作爲一個獨立的功能程序,當有php頁面的請求時,Apache通過CGI方式啓動一個PHP進程,PHP進程獲取資源並執行後,將執行結果返回給Apache,Apache返回給客戶端,之後Apache銷燬該進程。

  3. FastCGI(注:FastCGI是CGI協議的一個擴展,可以實現將PHP作爲一個獨立進程,由PHP自身實現進程的創建和銷燬):PHP作爲一個獨立程序,根據配置文件事前啓動N個作業進程用來等待處理用戶請求(類似於Apache的Prefork模型,規定默認啓動進程數、最大啓動進程數、最小啓動進程數等等),當有php頁面的請求時,Apache通過代理方式使用FastCGI協議將請求發送給PHP進程,並指定php網頁文件所在位置(URL),PHP進程接收後爲其分配一個作業進程並執行腳本。FastCGI好處在於可以使PHP服務作爲一個獨立服務器,通過Socket與httpd通信,可以使服務分離,可擴展性更強,並且無需像CGI一樣需要Apache來控制PHP的啓動,提高了Apache的工作效率。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章