1. php網頁運行原理
轉載以下,希望對你有幫助:
你有沒有想過PHP是怎麼在瀏覽器里輸出「你好世界」的?我也是看了PHP內核和擴展後才知道的。也許有些朋友也想知道其中原理,那就讓我們開始吧。
在上一篇網志里我簡單介紹了「在我瀏覽這個頁面之前都發生了些什麼?」這個問題。如果你錯過了就點這里看看吧。現在我要討論的是「PHP是怎樣在瀏覽器里輸出內容」這個問題。
簡介
先看看下面這個過程:
1. 我們從未手動開啟過PHP的相關進程,它是隨著Apache的啟動而運行的;
2. PHP通過mod_php5.so模塊和Apache相連(具體說來是SAPI,即伺服器應用程序編程介面);
3. PHP總共有三個模塊:內核、Zend引擎、以及擴展層;
4. PHP內核用來處理請求、文件流、錯誤處理等相關操作;
5. Zend引擎(ZE)用以將源文件轉換成機器語言,然後在虛擬機上運行它;
6. 擴展層是一組函數、類庫和流,PHP使用它們來執行一些特定的操作。比如,我們需要mysql擴展來連接MySQL資料庫;
7. 當ZE執行程序時可能會需要連接若干擴展,這時ZE將控制權交給擴展,等處理完特定任務後再返還;
8. 最後,ZE將程序運行結果返回給PHP內核,它再將結果傳送給SAPI層,最終輸出到瀏覽器上。
深入探討
等等,沒有這么簡單。以上過程只是個簡略版,讓我們再深入挖掘一下,看看幕後還發生了些什麼。
1. Apache啟動後,PHP解釋程序也隨之啟動;
2. PHP的啟動過程有兩步;
3. 第一步是初始化一些環境變數,這將在整個SAPI生命周期中發生作用;
4. 第二步是生成只針對當前請求的一些變數設置。
PHP啟動第一步
不清楚什麼第一第二步是什麼?別擔心,我們接下來詳細討論一下。讓我們先看看第一步,也是最主要的一步。要記住的是,第一步的操作在任何請求到達之前就發生了。
1. 啟動Apache後,PHP解釋程序也隨之啟動;
2. PHP調用各個擴展的MINIT方法,從而使這些擴展切換到可用狀態。看看php.ini文件里打開了哪些擴展吧;
3. MINIT的意思是「模塊初始化」。各個模塊都定義了一組函數、類庫等用以處理其他請求。
一個典型的MINIT方法如下:
PHP_MINIT_FUNCTION(extension_name){
/* Initialize functions, classes etc */
}
PHP啟動第二步
1. 當一個頁面請求發生時,SAPI層將控制權交給PHP層。於是PHP設置了用於回復本次請求所需的環境變數。同時,它還建立一個變數表,用來存放執行過程中產生的變數名和值。
2. PHP調用各個模塊的RINIT方法,即「請求初始化」。一個經典的例子是Session模塊的RINIT,如果在php.ini中啟用了Session 模塊,那在調用該模塊的RINIT時就會初始化$_SESSION變數,並將相關內容讀入;
3. RINIT方法可以看作是一個准備過程,在程序執行之間就會自動啟動。
一個典型的RINIT方法如下:
PHP_RINIT_FUNCTION(extension_name) {
/* Initialize session variables, pre-populate variables, redefine global variables etc */
}
PHP關閉第一步
如同PHP啟動一樣,PHP的關閉也分兩步:
1. 一旦頁面執行完畢(無論是執行到了文件末尾還是用exit或die函數中止),PHP就會啟動清理程序。它會按順序調用各個模塊的RSHUTDOWN方法。
2. RSHUTDOWN用以清除程序運行時產生的符號表,也就是對每個變數調用unset函數。
一個典型的RSHUTDOWN方法如下:
PHP_RSHUTDOWN_FUNCTION(extension_name) {
/* Do memory management, unset all variables used in the last PHP call etc */
}
PHP關閉第二步
最後,所有的請求都已處理完畢,SAPI也准備關閉了,PHP開始執行第二步:
1. PHP調用每個擴展的MSHUTDOWN方法,這是各個模塊最後一次釋放內存的機會。
一個典型的RSHUTDOWN方法如下:
PHP_MSHUTDOWN_FUNCTION(extension_name) {
/* Free handlers and persistent memory etc */
}
這樣,整個PHP生命周期就結束了。要注意的是,只有在伺服器沒有請求的情況下才會執行「啟動第一步」和「關閉第二步」。
2. 比較經典的php教程
推薦《PHP和MySQL.Web開發》(澳)Luke Welling 和Laura Thomason合著,被譽為Php開發聖經。
3. php的著名開源項目有哪些
國內的dedecms phpcms phpwind等等就 康盛的discuz經典一點
國外的 wordpress drupal joomla 都比較經典 都是世界上很出名的。
4. 求精典的PHP企業網站源碼
http://down.chinaz.com/s/16771.asp
情感家園程序 v3.0 For 企業版
基本實現了小型企業網站所要求的各種功能:如企業簡介,產品展示,人才招聘,特別主題,企業新聞等,前台採用 phpLib v7.4 做為模板引擎
默認賬號:admin
密碼:admin
5. 求經典php企業網站源碼
帝國cms,phpcms,php168,米拓等都不錯
6. php是什麼
PHP(PHP: Hypertext Preprocessor)即「超文本預處理器」,是在伺服器端執行的腳本語言,尤其適用於Web開發並可嵌入HTML中。
PHP語法學習了C語言,吸納java和Perl多個語言的特色發展出自己的特色語法,並根據它們的長項持續改進提升自己,例如java的面向對象編程,該語言當初創建的主要目標是讓開發人員快速編寫出優質的web網站。PHP同時支持面向對象和面向過程的開發,使用上非常靈活。
語言特點
PHP是一個受眾大並且擁有眾多開發者的開源軟體項目,Linux + Nginx + Mysql + PHP是它的經典安裝部署方式,相關的軟體全部都是開源免費的,所以使用PHP可以節約大量的正版授權費用。
不過PHP作為一個開源軟體,它缺乏大型科技公司的支持背景,網路上對它的唱衰也是經久不衰,不過它的持續迭代和性能持續增強的現實卻是鼓舞人心的,PHP社區用實際行動給予各種質疑強有力的回擊。
7. PHP 網站製作 PHP+MYSQL
同學,你這是作業吧.
看你的問題,這是簡單的操作mysql資料庫,如果有些小基礎,你可以看一下關於php操作mysql的知識點來做.
w3c教程網就有.
8. php 網站怎麼做到,不刷新頁面,實時自動跟新數據
不刷新頁面更新數據,一般有兩個方法實現,都離不開JAVASCRIPT。現在最流行的就是AJAX,是用JS腳本連接資料庫更新數據,刷新頁面部分區域內容,不刷新整個網頁。另外一個是比較經典、但是兼容性更高的方法,設置一個隱藏的FRAME或者iFRAME幀,那個幀不斷刷新PHP頁面,頁面內容為改變可見幀內容的JS。
9. 誰能推薦經典網站!(類別不限)
網站設計入門網站大觀 z
網站設計工業近年百花齊放,入門網站Design Portal也特別多,以下介紹一些有名的。
http://www.k10k.net
kaliber1000,是最有名的portal,其號稱"設計師的午餐盒",是很多人每天必去的地方。目前該網站正在重整,但其享負盛名,不能不介紹。
http://www.linkp.com
Linkp至今已出至第34期,每期會介紹十多個網站。其評選嚴謹,能入榜的比屬上品。
http://www.8minus8.com
版面簡潔,網站收藏量不算多。
http://www.experimental.ro/front/index.php
設計出色,新聞也很update。
http://www.australianinfront.com.au
一個極具影響力的澳洲網站,宗旨是發揚本地創作的精神。
http://www.shadowness.com
一個帶有photoshop/3D Max/Flash等教程的入門網站。
http://www.designiskinky.net
以報道各知名網頁的最新動態為主。知名度很高。
http://www.pixelsurgeon.com
pixelsurgeon除了有新聞外,也有設計師的采訪,甚至有電影/書籍/漫畫/音樂等的review。他們有幾位華人設計師。我舊的頭像里的中文字就是出自pixelsurgeon。
http://www.halfproject.com
100%菲律賓製造是他們的口號。這個網站的製作出奇的好,非常有特色。而內容方面也比同類網站充實。
http://www.kiiroi.nu
kiiroi是早期成名的,盡來較為沉寂。
http://www.surfstation.lu
也是早期成名的。splash page隨機的載上一些名設計師給他們做的封面。
http://www.shift.jp.org
shift雜志的全球影響力決不亞於其他網站。它除了經常更新的splash shockwave page,其他設計實在不敢恭維。但它擁有龐大的database,收錄了無數東瀛及世界各地的出色設計。而他們出道甚早,可以說是design portal的開山鼻祖。
http://www.34it.com
主辦人為美國的Patrick Miko和比利時的Peter(www.nrg.be)。這個網站主力提供Flash的資訊/高級教程和高級源文件。討論區是你見過最酷的vbb,裡面的版主都是成名人物。而整個網站從設計者到會員大多是頂尖高手(除了我),所以水準極高。boos在那裡混了很久,得益良多。
http://www.deformat.de
來自德國,連結了大小設計網站無數。deformat最大的優點是將各類型分門別類,介紹的很詳細。
http://www.pixellamer.com
內容包括業界新聞,牆紙,連結等。值得一看。
http://www.infourm.com
inforum於數月前問世,規模較少但水準極高。inforum由forum製作,而fourm的成員包括:
www.Fourm.com
www.Natzke.com
www.Miniml.com
www.Soundofdesign.com
www.Gridplane.com
單看這幕後班底就知道infourm的厲害。miniml.com帶起的pixel font潮流,估計還會流行幾年。
http://www.h73.com
HSE7EN3的名氣不亞於其競爭對手。去年此網站被Quorporation收購,重新整頓後很有大型網站的風格。無奈一直鍾情的舊版h73,在新站里已找不到一點痕跡。今天發現h73這個URL重新運作,特來推薦。
http://www.threeoh.com
聞名一時的threeoh重整之後,這兩天又重見天日。目前網站內容不多,不少連結仍未做好。但憑他的實力估計能在短期內回復昔日光彩,請大家拭目以待。
10. 哪有比較強的PHP網上商城系統呢
PHP網上商城系統推薦你YISHOP商城系統
1.代碼規范程度
系統的底層框架採用純C編寫,運行速度是PHP框架的10倍以上。代碼層面採用目前最先進的OOP(面向對象)設計思想和MVC(控制器,模型,視圖分離)的模塊化設計理念以及驅動式設計使系統代碼更簡煉,以最少的代碼實現最多的功能;
2.系統擴展性
擴展性:採用目前最先進的模塊化、驅動化設計讓系統極容易擴展,無論是增加底層驅動,還是增加功能都很方便。比如你要增加另外一種資料庫,你只要按照規定的方式進行擴展即可,不用對系統動大手術;
3.模板引擎
為提高系統性能,系統默認採用PHP原生的模板引擎。當然,也支持Smarty等主流的模板引擎
4.系統性能
系統從設計之初就秉承簡單可依賴的信念設計,為了提高性能,架構師把把最基礎,最常用,最核心的功能才用C語言實現,系統也進行多種壓力測試,把每一個稍微影響系統性能的環節都做優化,自主研發的隊列機制,讓瞬間爆發的流量也能保證穩定不出錯