PHP的工作原理以及lamp四者之間的關係

weixin_33941350發表於2011-08-19

最近搭建伺服器,突然感覺lamp之間到底是怎麼工作的,或者是怎麼聯絡起來?平時只是寫程式,重來沒有思考過他們之間的工作原理,借這個機會趕集惡補一下這個知識。

l:即作業系統,也就是建立在電腦硬體基礎上的最底層的東西,相當於:國家這個概念,而win或者linux就相當於不同的國家

a:就是web伺服器,這個伺服器 相當於國家領導人:主席,起到指導作用。

m:就是資料庫,儲存資料的地方,相當 銀行

p:就是php,相當於下屬,做事情的人

也就是說php是apache的一個外掛程式,必須依靠web伺服器才可以執行。當客戶端瀏覽器觸發事件--->php程式提交到apache伺服器---->apache伺服器根據php程式的特點判斷是php程式,提交給php引擎程式--->php引擎程式解析並讀取資料庫生成相應的頁面

php引擎;像smarty就是,有自己的標籤模式並可以解析這種標籤 生成原生態的php程式

那麼如何優化網站呢?其實就是觸發時間到生成相應的頁面過程,這個時間差越小,使用者體驗越好,那麼根絕上面幾步,我們可以想到的優化方法就是:客戶端提交的資料大小已經併發數量----- 都提交給apache伺服器處理---apache分配給php引擎---php程式和讀取資料庫---輸出

1:優化 客戶端資料提交,不過當使用者達到一定級別時候,這個資料還是很大的

2:優化 web伺服器,主要是處理高併發的效能

3:優化php引擎程式:samrty模版的引擎很不錯

4:優化php程式:主要是資料庫讀取的方面和php自身程式效率

5:資料庫優化:資料庫的配置以及優化方式,達到與php讀取效率的最完美匹配

6:輸出優化:使用js等技術 ajax技術


php,apache和mysql組合的工作過程:

PHP的所有應用程式都是通過WEB伺服器(如IIS或Apache)和PHP引擎程式解釋執行完成的,工作過程:

(1)當使用者在瀏覽器地址中輸入要訪問的PHP頁面檔名,然後回車就會觸發這個PHP請求,並將請求傳送化支援PHP的WEB伺服器。

(2)WEB伺服器接受這個請求,並根據其字尾進行判斷如果是一個PHP請求,WEB伺服器從硬碟或記憶體中取出使用者要訪問的PHP應用程式,並將其傳送給PHP引擎程式。

(3)PHP引擎程式將會對WEB伺服器傳送過來的檔案從頭到尾進行掃描並根據命令從後臺讀取,處理資料,並動態地生成相應的HTML頁面。

(4)PHP引擎將生成HTML頁面返回給WEB伺服器。WEB伺服器再將HTML頁面返回給客戶端瀏覽器。

簡言之:apache是WEB伺服器,它可以解析php語言。

Apache的工作原理:
Web系統是客戶端/伺服器式的,所以應該有伺服器程式和客戶端程式兩部分。常用的伺服器程式是Apache;常用的客戶端程式是瀏覽器(如IE、 Netscape、Mozilla)。我們可以在瀏覽器的位址列內輸入統一資源定位地址(URL)來訪問Web頁面。Web最基本的概念是超文字 (Hypertext)。它使得文字不再是傳統的書頁式文字,而是可以在閱讀過程中從一個頁面位置跳轉到另一個頁面位置。用來書寫Web頁面的語言稱為超 文字標記語言,即HTML。WWW服務遵從HTTP協議,預設的TCP/IP埠是80,客戶端與伺服器的通訊過程簡述如下:
(1)客戶端(瀏覽器)和Web伺服器建立TCP連線,連線建立以後,向Web伺服器發出訪問請求(如get)。根據HTTP協議,該請求中包含了客戶端的IP地址、瀏覽器的型別和請求的URL等一系列資訊。
(2)Web伺服器收到請求後,將客戶端要求的頁面內容返回到客戶端。如果出現錯誤,那麼返回錯誤程式碼。

(3)斷開與遠端Web伺服器的連線

 

php工作原理:

如下圖所示:

                      

apache,php以及mysql的關係:

apache是web伺服器,主要是請求和響應的功能,是一種軟體,用於釋出網站。在配置檔案中可以設定檔案根目錄,處理的檔案型別以及埠等。apache單獨不能處理php程式碼。

php(php 應用程式伺服器):不能單獨存在的,需要以apache為依託。也可以說php是apache功能模組的一種擴充套件,php作為apache的外掛,用於解 析php程式碼。經過解析的動態網頁此時就不存在<?php ?>了。當apache服務啟動的同時也啟動了php。也就是說php必須和apache安裝在同一臺伺服器上,不可以分割。

mysql:一種開源的很流行的關係型資料庫。與apache無關,只是在響應php程式碼中的sql操作的時候才被訪問。不需要與apache安裝在同一臺伺服器上,可以單獨存在,只需php遠端連線即可。


相關文章