HTML與PHP運行原理

HTML

1.HTML是什么

Html是超文本標記語言,主要用于做網(wǎng)頁杉辙,可以再網(wǎng)頁上顯示文字模捂、圖像、視頻蜘矢、聲音狂男。

HTML的結(jié)構(gòu)包括頭部(head),主體(body)兩部分品腹,其中頭部描述瀏覽器所需的信息岖食,而主體部分則包含所要說明的具體內(nèi)容。

●HTML只能做靜態(tài)網(wǎng)頁舞吭,不能做動態(tài)網(wǎng)頁
●網(wǎng)頁分為靜態(tài)網(wǎng)頁(Html)县耽、動態(tài)網(wǎng)頁(php/jsp/asp/asp.net)
● 靜態(tài)網(wǎng)頁:隨著html代碼的生成,頁面的內(nèi)容和顯示效果就基本上不會發(fā)生變化 了镣典,除非你修改頁面代碼
●動態(tài)網(wǎng)頁:頁面代碼雖然沒有變,但是顯示的內(nèi)容卻是可以隨著時間唾琼、環(huán)境或者數(shù)據(jù)庫操作的結(jié)果而發(fā)生改變的網(wǎng)頁兄春,可以交互的網(wǎng)頁屬于動態(tài)網(wǎng)頁

2.HTML的運行原理

Html有兩種運行方式

(1) 本地運行:直接用瀏覽器打開
(2) 遠程訪問:通過網(wǎng)站服務器瀏覽,以http的協(xié)議方式去打開锡溯,有網(wǎng)絡交互赶舆。瀏覽者首先會通過域名來尋找存放網(wǎng)頁的計算機服務器哑姚。如果找到,瀏覽器就會與該服務器聯(lián)系并建立信息傳輸通道使信息正確傳輸芜茵。信息通道建立好后叙量,瀏覽器就會向服務器要求下載目錄下的html文件。文件下載成功后九串,瀏覽器便會解釋執(zhí)行文件中的html標記绞佩。如果有圖像,則下載圖像文件猪钮,然后一起顯示在瀏覽器窗口上品山。
  1. 用戶輸入網(wǎng)址(假設是個html頁面,并且是第一次訪問)烤低,瀏覽器向服務器發(fā)出請求肘交,服務器返回html文件;
  2. 瀏覽器開始載入html代碼扑馁,發(fā)現(xiàn)<head>標簽內(nèi)有一個<link>標簽引用外部CSS文件涯呻;
  3. 瀏覽器又發(fā)出CSS文件的請求,服務器返回這個CSS文件腻要;
  4. 瀏覽器繼續(xù)載入html中<body>部分的代碼复罐,并且CSS文件已經(jīng)拿到手了,可以開始渲染頁面了闯第;
  5. 瀏覽器在代碼中發(fā)現(xiàn)一個<img>標簽引用了一張圖片市栗,向服務器發(fā)出請求。此時瀏覽器不會等到圖片下載完咳短,而是繼續(xù)渲染后面的代碼填帽;
  6. 服務器返回圖片文件,由于圖片占用了一定面積咙好,影響了后面段落的排布篡腌,因此瀏覽器需要回過頭來重新渲染這部分代碼;
  7. 瀏覽器發(fā)現(xiàn)了一個包含一行Javascript代碼的<script>標簽勾效,趕快運行它嘹悼;
  8. Javascript腳本執(zhí)行了這條語句,它命令瀏覽器隱藏掉代碼中的某個<div> (style.display=”none”)层宫。杯具啊杨伙,突然就少了這么一個元素,瀏覽器不得不重新渲染這部分代碼萌腿;
  9. 終于等到了</html>的到來限匣,瀏覽器淚流滿面……
  10. 等等,還沒完毁菱,用戶點了一下界面中的“換膚”按鈕米死,Javascript讓瀏覽器換了一下<link>標簽的CSS路徑锌历;11. 瀏覽器召集了在座的各位<div><span><ul><li>們,“大伙兒收拾收拾行李峦筒,咱得重新來過……”究西,瀏覽器向服務器請求了新的CSS文件,重新渲染頁面物喷。

PHP

1.Nginx服務器起到的作用

服務器分為兩類:
●前端服務器卤材。負責HTTP請求的解析與轉(zhuǎn)發(fā),或者處理靜態(tài)請求脯丝。輕量級商膊,并發(fā)量高,常常用作反向代理宠进、負載均衡等晕拆。說白了,就是負責請求發(fā)到哪里材蹬,或者取現(xiàn)成的文件之類的实幕。
●應用服務器。負責調(diào)用某一種語言的解釋器堤器,或某種語言寫的昆庇、已經(jīng)編譯好的程序,接收HTTP請求中的各個參數(shù)闸溃,按照開發(fā)者的意圖做出動作整吆,并生成結(jié)果返回給調(diào)用方。

Nginx一般用作前端服務器辉川,解析HTTP請求表蝙,并把請求傳遞到下一個地方(下一臺服務器)

2.關于服務器端的行為

1、當用戶訪問的是一個靜態(tài)頁面時乓旗,服務器會直接返回用戶請求的頁面府蛇,瀏覽器能夠解析靜態(tài)頁面
2、當用戶訪問的頁面含有php代碼時屿愚,服務器會將這部分交給php模塊進行處理汇跨,php模塊處理完后將結(jié)果放回給服務器,然后服務器再返回用戶的請求
3妆距、當用戶訪問的頁面有對數(shù)據(jù)庫進行操作時穷遂,服務器會將其交給php模塊,php模塊再將數(shù)據(jù)庫處理的部分交給數(shù)據(jù)庫服務器進行處理娱据,處理完成后返回給服務器蚪黑,服務器再返回給用戶

3.php網(wǎng)頁運行原理

瀏覽器〉輸入網(wǎng)址〉找到對應服務器〉apache提供服務開始
-->如果是html文件〉從文件夾中拿出文件 > 發(fā)出去(經(jīng)過互聯(lián)網(wǎng))給瀏覽器
-->如果是php文件〉從文件夾中拿出文件〉交與php模塊執(zhí)行〉返回給apache〉發(fā)給瀏覽器

4.PHP是什么

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言語法吸收了C語言、Java和Perl的特點,利于學習,使用廣泛口猜,主要適用于Web開發(fā)領域衔掸。PHP 獨特的語法混合了C、Java妆棒、Perl以及PHP自創(chuàng)的語法澡腾。它可以比CGI或者Perl更快速地執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比糕珊,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執(zhí)行动分,執(zhí)行效率比完全生成HTML標記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼红选,編譯可以達到加密和優(yōu)化代碼運行澜公,使代碼運行更快。

5.PHP的設計理念及特點

●多進程模型:由于PHP是多進程模型喇肋,不同請求間互不干涉坟乾,這樣保證了一個請求掛掉不會對全盤服務造成影響,當然蝶防,隨著時代發(fā)展甚侣,PHP也早已支持多線程模型。
●弱類型語言:和C/C++间学、Java殷费、C#等語言不同,PHP是一門弱類型語言低葫。一個變量的類型并不是一開始就確定不變详羡,運行中才會確定并可能發(fā)生隱式或顯式的類型轉(zhuǎn)換,這種機制的靈活性在web開發(fā)中非常方便氮采、高效殷绍。
●引擎(Zend)+組件(ext)的模式降低內(nèi)部耦合。
●中間層(sapi)隔絕web server和PHP鹊漠。
●語法簡單靈活主到,沒有太多規(guī)范。缺點導致風格混雜躯概,但再差的程序員也不會寫出太離譜危害全局的程序登钥。

6.PHP的四層體系

PHP的核心架構(gòu)如下圖:
image.png

●Zend引擎:Zend整體用純C實現(xiàn),是PHP的內(nèi)核部分娶靡,它將PHP代碼翻譯(詞法牧牢、語法解析等一系列編譯過程)為可執(zhí)行opcode的處理并實現(xiàn)相應的處理方法、實現(xiàn)了基本的數(shù)據(jù)結(jié)構(gòu)(如hashtable、oo)塔鳍、內(nèi)存分配及管理伯铣、提供了相應的api方法供外部調(diào)用,是一切的核心轮纫,所有的外圍功能均圍繞Zend實現(xiàn)腔寡。
●Extensions:圍繞著Zend引擎,extensions通過組件式的方式提供各種基礎服務掌唾,我們常見的各種內(nèi)置函數(shù)(如array系列)放前、標準庫等都是通過extension來實現(xiàn),用戶也可以根據(jù)需要實現(xiàn)自己的extension以達到功能擴展糯彬、性能優(yōu)化等目的(如貼吧正在使用的PHP中間層凭语、富文本解析就是extension的典型應用)。
●Sapi:Sapi全稱是Server Application Programming Interface撩扒,也就是服務端應用編程接口似扔,Sapi通過一系列鉤子函數(shù),使得PHP可以和外圍交互數(shù)據(jù)却舀,這是PHP非常優(yōu)雅和成功的一個設計虫几,通過sapi成功的將PHP本身和上層應用解耦隔離,PHP可以不再考慮如何針對不同應用進行兼容挽拔,而應用本身也可以針對自己的特點實現(xiàn)不同的處理方式辆脸。
●上層應用:這就是我們平時編寫的PHP程序,通過不同的sapi方式得到各種各樣的應用模式螃诅,如通過webserver實現(xiàn)web應用啡氢、在命令行下以腳本方式運行等等术裸。

如果PHP是一輛車,那么車的框架就是PHP本身袭艺,Zend是車的引擎(發(fā)動機),Ext下面的各種組件就是車的輪子猾编,Sapi可以看做是公路,車可以跑在不同類型的公路上答倡,而一次PHP程序的執(zhí)行就是汽車跑在公路上轰传。因此获茬,我們需要:性能優(yōu)異的引擎+合適的車輪+正確的跑道港庄。

例子
image.png

這個是一段簡單的php代碼恕曲,文件是hello.php,我通過www.xxx.com/hello.php請求這個頁面的時候佩谣,php解析數(shù)據(jù)返回的過程:

1-通過xxx.com/hello.php運行php文件度帮,這是你的web服務器做的事情,與php無關稿存。
2-是web服務器收到你的請求,然后找到hello.php這個文件瞳秽,然后調(diào)用php解釋器解析文件
3-php解析hello.php返回解析結(jié)果給web服務器
4-web服務器返回結(jié)果給瀏覽器
5-瀏覽器把這個結(jié)果解析成網(wǎng)頁呈現(xiàn)到你的面前

這是全過程瓣履,而php只在步驟3發(fā)生了作用。

當php解釋hello.php時判斷是不是php代碼练俐,不是就原樣返回袖迎,是就執(zhí)行并把執(zhí)行結(jié)果返回。
怎么判斷是不是php代碼呢腺晾?寫在<?php ?>的就是燕锥,否則都不是。

如何是不是php代碼是你配置:比如apache里面可以配置.php,.php3,.phtml等擴展名的文件是由php解釋器執(zhí)行的悯蝉。php會解釋完整的代碼归形,代碼內(nèi)容只有兩種,php代碼和非php代碼鼻由,非php代碼原樣返回暇榴,不管是不是html,因為php并不認識非php代碼蕉世。echo代表輸出蔼紧,還有其他的命令也有輸出的意思,比如var_dump, print_r等狠轻。如果你的源碼中沒有任何輸出指令就不會返回任何內(nèi)容奸例。當然如果執(zhí)行時出現(xiàn)了異常視php.ini的配置可能返回錯誤信息。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末向楼,一起剝皮案震驚了整個濱河市查吊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜜自,老刑警劉巖菩貌,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異重荠,居然都是意外死亡箭阶,警方通過查閱死者的電腦和手機虚茶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仇参,“玉大人嘹叫,你說我怎么就攤上這事≌┢梗” “怎么了罩扇?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長怕磨。 經(jīng)常有香客問我喂饥,道長,這世上最難降的妖魔是什么肠鲫? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任导饲,我火速辦了婚禮,結(jié)果婚禮上硝岗,老公的妹妹穿的比我還像新娘。我一直安慰自己型檀,他們只是感情好贱除,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布月幌。 她就那樣靜靜地躺著悬蔽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪录语。 梳的紋絲不亂的頭發(fā)上禾乘,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天始藕,我揣著相機與錄音氮趋,去河邊找鬼剩胁。 笑死祥国,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的啊犬。 我是一名探鬼主播椒惨,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼领斥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起何恶,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤细层,失蹤者是張志新(化名)和其女友劉穎唬涧,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捧搞,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胎撇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年晚树,在試婚紗的時候發(fā)現(xiàn)自己被綠了雅采。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慨亲。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡巡雨,死狀恐怖铐望,靈堂內(nèi)的尸體忽然破棺而出茂附,到底是詐尸還是另有隱情,我是刑警寧澤乒验,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布锻全,位于F島的核電站录煤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏妈踊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一歪泳、第九天 我趴在偏房一處隱蔽的房頂上張望呐伞。 院中可真熱鬧慎式,春花似錦、人聲如沸鞍历。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽香嗓。三九已至靠娱,卻和暖如春掠兄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚂夕。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工婿牍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俏蛮。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓搏屑,卻偏偏與公主長得像露该,于是被迫代替她去往敵國和親解幼。 傳聞我的和親對象是個殘疾皇子包警,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • php看著很簡單害晦,但是要深入php的運行機制與原理也不是件容易的事,我們除了會使用之外還要知道它底層的工作原理鲫剿,這...
    文檔隨手記閱讀 384評論 1 11
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案灵莲? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,734評論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理政冻,服務發(fā)現(xiàn)枚抵,斷路器,智...
    卡卡羅2017閱讀 134,626評論 18 139
  • Awesome PHP 一個PHP資源列表汽摹,內(nèi)容包括:庫逼泣、框架逆屡、模板、安全魏蔗、代碼分析、日志莺治、第三方庫、配置工具床佳、W...
    guanguans閱讀 5,751評論 0 47
  • 本篇主要說些Android性能優(yōu)化的幾種方法榄审,主要包括布局優(yōu)化、繪制優(yōu)化搁进、內(nèi)存泄漏優(yōu)化、響應速度優(yōu)化影兽、ListVi...
    深情不及酒伴閱讀 356評論 0 1