LAMP平臺的構成組件

  1. Linux操作系統:LAMP的架構基礎,支撐Web點點的操作系統
  2. Apache網站服務器:作爲LAMP架構的前段應用
  3. MySQL數據庫服務器:作爲LAMP架構的後端應用,各種應用的信息都可以存儲到數據庫中
  4. PHP/Perl/Python:這裏主要介紹PHP

PHP是通用服務器端腳本編程語言,其主要用於web開發用以實現動態web頁面,也是最早實現將腳本嵌入到HTML源碼文檔中服務器端腳本語言之一。同時,PHP還提供了一個命令行接口,因此也可以在大多數系統上作爲一個獨立的shell來使用

PHP的Opcode是一種PHP腳本編譯後的中間語言,就像Java的ByteCode,或者.NET的MSL。PHP執行PHP腳本代碼一般會經過如下4個步驟(確切的來說,應該是PHP的語言引擎Zend)
       1、Scanning(Lexing) —— 將PHP代碼轉換爲語言片段(Tokens)
       2、Parsing —— 將Tokens轉換成簡單而有意義的表達式
       3、Compilation —— 將表達式編譯成Opocdes
       4、Execution —— 順次執行Opcodes,每次一條,從而實現PHP腳本的功能
php執行PHP腳本代碼一般會經過如下幾個步驟:掃描–>分析–>編行–>執行

假如第一個用戶請求使用PHP開發的網頁時,要做以上的四個步驟,第二個用戶請求同一個文件時也不會直接執行會執行,還會經歷上四個步驟,所以速度相對較慢,若想重複使用,可以將安全的代碼本身在多個進程間共享,所以出現了下面的PHP加速器。

常見的加速器有:APC,Eaccelerator,Xcahe,Zend Optimizer,Zend Guard Loader,Nusphere phpexpress
Zend Optimizer並非是opcode加速器,它是由Zend Technologies爲PHP5.2及以前的版本提供的一個免費、閉源的PHP擴展,其能夠運行由Zend Guard生成的加密的PHP代碼或模糊代碼。 而Zend Guard Loader則是專爲PHP5.3提供的類似於ZendOptimizer功能的擴展。項目地址,http://www.zend.com/en/products/guard/runtime-decodrss

可以將opcode緩存與PHP的共享內存中,從而可以讓同一段代碼的後續重複執行時跳過編譯階段以提高性能,由此可以看出,這些加速器並非真正提高了opcode的運行速度,而是通過分析opcode後將它們重新排列已達到快速執行的目的。

1.PHP是如何被Aphche調用的?
httpd本身不具備解析PHP代碼的能力,需要依賴PHP的解釋器
舉例:在一臺服務器上運行了httpd的web服務器程序,並且在服務器的本地磁盤上存儲了很多網頁文件,這些網頁文件是使用PHP開發的。當用戶請求一個PHP頁面時,httpd本身是無法解析PHP的,需要交給php解釋器,php解析器將結果返回給httpd,httpd只是將結果返回給用戶。關鍵問題是httpd如何調用PHP?方式有以下幾種:
(1).模塊機制:首先httpd是模塊化的,可以將PHP編譯成apache的一個模塊,此時php是作爲apache進程的一部分來運行的。
(2).CGI機制:可以將PHP作爲一個獨立的進程,當httpd需要代碼時臨時基於CGI協議喚醒一個PHP解釋器。如果是基於CGI機制運行,php進程的啓動,銷燬都是由httpd負責,這樣速度很慢,此時我們可以讓PHP運行爲一個獨立的服務。
(3).FastCGI機制:PHP作爲一個獨立的服務運行,此時可將httpd服務器和php服務器分離開以C/S模式運行,當用戶請求的是PHP的動態頁面時,通過fastcgi協議去聯繫後端的PHP服務器

2.PHP與MySQL之間的調用
php本身不依賴mysql,只有程序員開發的代碼用到mysql時纔會聯繫mysql。PHP聯繫mysql的工具是php-mysql,作爲PHP的組成部分提供。php聯繫mysql服務器時使用mysql協議。當編譯安裝的時候在配置環境時,添加mysql參數來調用

LAMP的優勢:
1成本低廉、全部是開源軟件
2可定製、易於開發
3方便易用、安全和穩定

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