Web項目框架圖
在計算機的世界里,提供服務(wù)的一方通常被稱為服務(wù)端(Server),而接受服務(wù)的另一方我們稱作客戶端(Client)。這種關(guān)系應(yīng)用在互聯(lián)網(wǎng)上,就變成使用者和網(wǎng)站的關(guān)系了,PHP是服務(wù)端,而瀏覽器是客戶端。
圖是常見的PHP Web框架圖,服務(wù)端對外提供網(wǎng)絡(luò)服務(wù),由服務(wù)器、PHP集群和各類底層服務(wù)組成,為客戶端提供數(shù)據(jù)查詢、API服務(wù)和瀏覽器網(wǎng)頁等。
1.服務(wù)器
常見的服務(wù)器有Nginx、Apache、IIS。用戶發(fā)起的請求首先會經(jīng)過服務(wù)器,然后服務(wù)器將請求發(fā)給PHP進(jìn)行數(shù)據(jù)處理,并將處理的結(jié)果返回給用戶。
2.PHP集群
PHP是腳本語言,可以通過服務(wù)器接收來自用戶的各種數(shù)據(jù),并將處理后的數(shù)據(jù)或者結(jié)果傳回給服務(wù)器。在Web框架中,PHP用來處理各種業(yè)務(wù)需求,通過編寫PHP代碼可以實現(xiàn)登錄注冊、訂單管理、網(wǎng)頁渲染,以及其他復(fù)雜的業(yè)務(wù)處理。為了應(yīng)對大規(guī)模的請求,一般都是由多個PHP機器組成集群,將網(wǎng)絡(luò)流量分散到各個PHP上面。
3.各類底層服務(wù)
底層服務(wù)有很多種,比如數(shù)據(jù)庫MySQL用來存儲各種Web數(shù)據(jù),緩存服務(wù)可以加速一些數(shù)據(jù)的獲取和頁面的展示,對于用戶流量較大的操作可以通過消息隊列進(jìn)行流量管控等。除了這些底層服務(wù),還有搜索引擎、第三方插件、日志系統(tǒng)、文件存儲服務(wù)等其他服務(wù),這些底層服務(wù)為Web提供了最基本也是最重要的功能,并被PHP調(diào)用。
PHP工作過程
采用Apache作為服務(wù)器,以Apache為例,PHP的運行原理是Apache、PHP、瀏覽器之間的協(xié)作過程。
1.用戶在瀏覽器的地址欄輸入網(wǎng)址,比如http://test.php,點擊回車鍵。
2.瀏覽器向網(wǎng)絡(luò)發(fā)起PHP請求,并將請求傳送到Apache服務(wù)器。
3.Apache服務(wù)器接收到請求,并在網(wǎng)站目錄下找到對應(yīng)的test.php文件。
4.將文件提交給PHP解釋程序,PHP解釋器對該lest.php文件進(jìn)行語法分析。若發(fā)現(xiàn)語法錯誤,則經(jīng)Apache將錯誤信息返回到瀏覽器,否則執(zhí)行該PHP程序。
5.PHP執(zhí)行后的結(jié)果,經(jīng)Apache返回到瀏覽器,瀏覽器對返回結(jié)果進(jìn)行渲染。
提示
如果瀏覽器請求的文件不是PHP文件,而是圖片、HTML文件或Javascript文件,上述過程會簡化。Apache服務(wù)器會在網(wǎng)站目錄下尋找對應(yīng)的文件,若找不到則向瀏覽器返回“錯誤信息404不存在”,若找到則直接將文件內(nèi)容返回給瀏覽器,這個過程不再經(jīng)過PHP程序執(zhí)行。比如,test.php文件內(nèi)容是“1+1”,經(jīng)過PHP處理以后,瀏覽器會顯示“2”;如果有一個內(nèi)容一樣的test.htm1文件,htm1不經(jīng)過PHP處理,瀏覽器訪問時依舊會顯示“1+1”。

