lamp內部底層的實現和結合機制

2021-06-18 01:11:16 字數 2308 閱讀 8758

最近搭建伺服器,突然感覺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遠端連線即可。

IOC和AOP的底層實現原理

在談論ioc和aop的底層實現原理前,先來闡述一下ioc和di的區別。ioc和di的區別 1 ioc 控制反轉,把建立物件交給spring進行配置 2 di 依賴注入,向類裡面的屬性中設定值 3 二者關係 di不能單獨存在,要在ioc基礎之上來完成操作,即要先建立物件才能注入屬性值。aop底層實現 ...

執行緒池的使用和底層實現

執行緒池是指在初始化乙個多執行緒應用過程中建立的乙個執行緒集合,該執行緒集合使得程式在執行任務時不再需要臨時建立新的執行緒,而是可以直接呼叫執行緒池中的執行緒。執行緒池可以同時執行多個任務,如果任務佇列已滿,則新來的任務會排隊等待,執行緒池的執行緒數量不會大於既定的最大值。timeunit.days...

HashMap的put和get的底層實現原理

hashmap的put和get的底層實現原理 在了解hashmap的底層實現原理的時候,我們首先了解hashmap的底層結構。hashmap的底層是基於陣列 鍊錶實現的。但是jdk1.7和jdk1.8的實現有點不同。hashmap的儲存結構 hashmap的底層是基於陣列 鍊錶實現的。但是jdk1....