PHP相關(guān)概念及配置

php

MIME知给,http貌矿,html

MIME:MIME(Multipurpose Internet Mail Extensions)多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型
瀏覽器:插件旬牲,或是調(diào)用外在程序废酷。
動(dòng)態(tài)網(wǎng)站:根據(jù)客戶端請(qǐng)求淋昭,服務(wù)器調(diào)用外界程序運(yùn)行腳本生成文檔在返回給客戶端遂黍。返回不同結(jié)果终佛。根據(jù)客戶端不同請(qǐng)求做出不同響應(yīng)。

客戶端動(dòng)態(tài):服務(wù)器端開(kāi)發(fā)一段程序雾家,這段程序的源程序下載到客戶端本地并且在客戶端本地的運(yùn)行環(huán)境中運(yùn)行铃彰。并通過(guò)瀏覽器將執(zhí)行結(jié)果顯示出來(lái)。

防止惡意代碼芯咧,一般不使用牙捉。Activex,applet

JVM:java Virtual Machine
一次編譯,到處運(yùn)行(移植性好)
向上一致敬飒,向下匹配機(jī)器的特性邪铲。
胖客戶端。

服務(wù)器端動(dòng)態(tài):
CGI:通用網(wǎng)關(guān)接口无拗,protocol
web進(jìn)程根據(jù)對(duì)應(yīng)的程序的不同調(diào)用不同外界的程序去運(yùn)行再將執(zhí)行結(jié)果返回給web進(jìn)程带到。
web應(yīng)用程序。webapp

編程語(yǔ)言:

  靜態(tài)語(yǔ)言:編譯型語(yǔ)言
    c蓝纲,c++,JAVA  強(qiáng)類型
    優(yōu)點(diǎn):效率高阴孟,性能好
    缺點(diǎn):錯(cuò)誤查找,每一次改動(dòng)都需要重新編譯税迷。開(kāi)發(fā)周期長(zhǎng)永丝,維護(hù)成本大。
  動(dòng)態(tài)語(yǔ)言:解釋型語(yǔ)言
     shell箭养,perl慕嚷,python弱類型
     優(yōu)點(diǎn):便于維護(hù),有眾多共享模塊
     缺點(diǎn):性能差

webapp:

facebook
  動(dòng)態(tài)語(yǔ)言:-->靜態(tài)語(yǔ)言 
  php--(Hiphop)-->C++
  
  perl 
  Python Django
  java毕泌,jSP (spring stucts,Hibernate)
  
  ruby喝检,rails
  asp,PHP
  
  學(xué)習(xí)編程語(yǔ)言:
  基本語(yǔ)法
  算法,數(shù)據(jù)結(jié)構(gòu)
  編譯原理

PHP

PHP is Hypertext Preprocessor
超文本預(yù)處理器

opcode:操作碼
php解釋型:php

php source code --->編譯二進(jìn)制---->執(zhí)行二進(jìn)制格式

Zend:opcode(二進(jìn)制)(php的虛擬機(jī))
opcode放在內(nèi)存中

將opcode放在內(nèi)存緩存中撼泛,可供進(jìn)程共用挠说。

加速器

分析器:
1.詞法分析
2.語(yǔ)法分析
3.生成執(zhí)行路徑

關(guān)于PHP

一、PHP簡(jiǎn)介

PHP是通用服務(wù)器端腳本編程語(yǔ)言愿题,其主要用于web開(kāi)發(fā)以實(shí)現(xiàn)動(dòng)態(tài)web頁(yè)面损俭,它也是最早實(shí)現(xiàn)將腳本嵌入HTML源碼文檔中的服務(wù)器端腳本語(yǔ)言之一蛙奖。同時(shí),php還提供了一個(gè)命令行接口杆兵,因此雁仲,其也可以在大多數(shù)系統(tǒng)上作為一個(gè)獨(dú)立的shell來(lái)使用。

Rasmus Lerdorf于1994年開(kāi)始開(kāi)發(fā)PHP琐脏,它是初是一組被Rasmus Lerdorf稱作“Personal Home Page Tool” 的Perl腳本攒砖, 這些腳本可以用于顯示作者的簡(jiǎn)歷并記錄用戶對(duì)其網(wǎng)站的訪問(wèn)。后來(lái)日裙,Rasmus Lerdorf使用C語(yǔ)言將這些Perl腳本重寫(xiě)為CGI程序吹艇,還為其增加了運(yùn)行Web forms的能力以及與數(shù)據(jù)庫(kù)交互的特性,并將其重命名為“Personal Home Page/Forms Interpreter”或“PHP/FI”昂拂。此時(shí)掐暮,PHP/FI已經(jīng)可以用于開(kāi)發(fā)簡(jiǎn)單的動(dòng)態(tài)web程序了,這即是PHP 1.0政钟。1995年6月路克,Rasmus Lerdorf把它的PHP發(fā)布于comp.infosystems.www.authoring.cgi Usenet討論組,從此PHP開(kāi)始走進(jìn)人們的視野养交。1997年精算,其2.0版本發(fā)布。

1997年碎连,兩名以色列程序員Zeev Suraski和Andi Gutmans重寫(xiě)的PHP的分析器(parser)成為PHP發(fā)展到3.0的基礎(chǔ)灰羽,而且從此將PHP重命名為PHP: Hypertext Preprocessor。此后鱼辙,這兩名程序員開(kāi)始重寫(xiě)整個(gè)PHP核心廉嚼,并于1999年發(fā)布了Zend Engine 1.0,這也意味著PHP 4.0的誕生倒戏。2004年7月怠噪,Zend Engine 2.0發(fā)布,由此也將PHP帶入了PHP5時(shí)代杜跷。PHP5包含了許多重要的新特性傍念,如增強(qiáng)的面向?qū)ο缶幊痰闹С帧⒅С諴DO(PHP Data Objects)擴(kuò)展機(jī)制以及一系列對(duì)PHP性能的改進(jìn)葛闷。

二憋槐、PHP Zend Engine

Zend Engine是開(kāi)源的、PHP腳本語(yǔ)言的解釋器淑趾,它最早是由以色列理工學(xué)院(Technion)的學(xué)生Andi Gutmans和Zeev Suraski所開(kāi)發(fā)阳仔,Zend也正是此二人名字的合稱。后來(lái)兩人聯(lián)合創(chuàng)立了Zend Technologies公司扣泊。

Zend Engine 1.0于1999年隨PHP 4發(fā)布近范,由C語(yǔ)言開(kāi)發(fā)且經(jīng)過(guò)高度優(yōu)化赤嚼,并能夠做為PHP的后端模塊使用。Zend Engine為PHP提供了內(nèi)存和資源管理的功能以及其它的一些標(biāo)準(zhǔn)服務(wù)顺又,其高性能、可靠性和可擴(kuò)展性在促進(jìn)PHP成為一種流行的語(yǔ)言方面發(fā)揮了重要作用等孵。

Zend Engine的出現(xiàn)將PHP代碼的處理過(guò)程分成了兩個(gè)階段:首先是分析PHP代碼并將其轉(zhuǎn)換為稱作Zend opcode的二進(jìn)制格式(類似Java的字節(jié)碼)稚照,并將其存儲(chǔ)于內(nèi)存中;第二階段是使用Zend Engine去執(zhí)行這些轉(zhuǎn)換后的Opcode俯萌。

三果录、PHP的Opcode

Opcode是一種PHP腳本編譯后的中間語(yǔ)言,就像Java的ByteCode,或者.NET的MSL咐熙。PHP執(zhí)行PHP腳本代碼一般會(huì)經(jīng)過(guò)如下4個(gè)步驟(確切的來(lái)說(shuō)弱恒,應(yīng)該是PHP的語(yǔ)言引擎Zend):
1、Scanning(Lexing) —— 將PHP代碼轉(zhuǎn)換為語(yǔ)言片段(Tokens)
2棋恼、Parsing —— 將Tokens轉(zhuǎn)換成簡(jiǎn)單而有意義的表達(dá)式
3返弹、Compilation —— 將表達(dá)式編譯成Opocdes
4、Execution —— 順次執(zhí)行Opcodes爪飘,每次一條义起,從而實(shí)現(xiàn)PHP腳本的功能

四、php的加速器

基于PHP的特殊擴(kuò)展機(jī)制如opcode緩存擴(kuò)展也可以將opcode緩存于php的共享內(nèi)存中师崎,從而可以讓同一段代碼的后續(xù)重復(fù)執(zhí)行時(shí)跳過(guò)編譯階段以提高性能默终。由此也可以看出,這些加速器并非真正提高了opcode的運(yùn)行速度犁罩,而僅是通過(guò)分析opcode后并將它們重新排列以達(dá)到快速執(zhí)行的目的齐蔽。

常見(jiàn)的php加速器有:

1、APC (Alternative PHP Cache)
遵循PHP License的開(kāi)源框架床估,PHP opcode緩存加速器含滴,目前的版本不適用于PHP 5.4。項(xiàng)目地址丐巫,http://pecl.php.net/package/APC蛙吏。

2、eAccelerator
源于Turck MMCache鞋吉,早期的版本包含了一個(gè)PHP encoder和PHP loader鸦做,目前encoder已經(jīng)不在支持。項(xiàng)目地址谓着, http://eaccelerator.net/泼诱。

3、XCache
快速而且穩(wěn)定的PHP opcode緩存赊锚,經(jīng)過(guò)嚴(yán)格測(cè)試且被大量用于生產(chǎn)環(huán)境治筒。項(xiàng)目地址屉栓,http://xcache.lighttpd.net/

4、Zend Optimizer和Zend Guard Loader
Zend Optimizer并非一個(gè)opcode加速器耸袜,它是由Zend Technologies為PHP5.2及以前的版本提供的一個(gè)免費(fèi)友多、閉源的PHP擴(kuò)展,其能夠運(yùn)行由Zend Guard生成的加密的PHP代碼或模糊代碼堤框。 而Zend Guard Loader則是專為PHP5.3提供的類似于Zend Optimizer功能的擴(kuò)展域滥。項(xiàng)目地址,http://www.zend.com/en/products/guard/runtime-decoders

5蜈抓、NuSphere PhpExpress
NuSphere的一款開(kāi)源PHP加速器启绰,它支持裝載通過(guò)NuSphere PHP Encoder編碼的PHP程序文件,并能夠?qū)崿F(xiàn)對(duì)常規(guī)PHP文件的執(zhí)行加速沟使。項(xiàng)目地址委可,http://www.nusphere.com/products/phpexpress.htm

五、PHP源碼目錄結(jié)構(gòu)

PHP的源碼在結(jié)構(gòu)上非常清晰腊嗡。其代碼根目錄中主要包含了一些說(shuō)明文件以及設(shè)計(jì)方案着倾,并提供了如下子目錄:

1、build —— 顧名思義燕少,這里主要放置一些跟源碼編譯相關(guān)的文件屈呕,比如開(kāi)始構(gòu)建之前的buildconf腳本及一些檢查環(huán)境的腳本等。
2棺亭、ext —— 官方的擴(kuò)展目錄虎眨,包括了絕大多數(shù)PHP的函數(shù)的定義和實(shí)現(xiàn),如array系列镶摘,pdo系列嗽桩,spl系列等函數(shù)的實(shí)現(xiàn)。 個(gè)人開(kāi)發(fā)的擴(kuò)展在測(cè)試時(shí)也可以放到這個(gè)目錄凄敢,以方便測(cè)試等碌冶。
3、main —— 這里存放的就是PHP最為核心的文件了涝缝,是實(shí)現(xiàn)PHP的基礎(chǔ)設(shè)施扑庞,這里和Zend引擎不一樣,Zend引擎主要實(shí)現(xiàn)語(yǔ)言最核心的語(yǔ)言運(yùn)行環(huán)境拒逮。
4罐氨、Zend —— Zend引擎的實(shí)現(xiàn)目錄,比如腳本的詞法語(yǔ)法解析滩援,opcode的執(zhí)行以及擴(kuò)展機(jī)制的實(shí)現(xiàn)等等栅隐。
5、pear —— PHP 擴(kuò)展與應(yīng)用倉(cāng)庫(kù),包含PEAR的核心文件租悄。
6谨究、sapi —— 包含了各種服務(wù)器抽象層的代碼,例如apache的mod_php泣棋,cgi胶哲,fastcgi以及fpm等等接口。
7潭辈、TSRM —— PHP的線程安全是構(gòu)建在TSRM庫(kù)之上的鸯屿,PHP實(shí)現(xiàn)中常見(jiàn)的*G宏通常是對(duì)TSRM的封裝,TSRM(Thread Safe Resource Manager)線程安全資源管理器萎胰。
8、tests —— PHP的測(cè)試腳本集合棚辽,包含PHP各項(xiàng)功能的測(cè)試文件技竟。
9、win32 —— 這個(gè)目錄主要包括Windows平臺(tái)相關(guān)的一些實(shí)現(xiàn)屈藐,比如sokcet的實(shí)現(xiàn)在Windows下和*Nix平臺(tái)就不太一樣榔组,同時(shí)也包括了Windows下編譯PHP相關(guān)的腳本。

CGI:通用網(wǎng)關(guān)接口联逻,protocol
common gateway Interface
apache <------CGI---->PHP
apache將php返回的數(shù)據(jù)流直接回復(fù)給客戶端

嵌入式web開(kāi)發(fā)語(yǔ)言

index.php
<html>
   <head></head>
 <?php
  
?>    
    </html>

只將php的代碼交由php處理搓扯。
CGI:管理PHP的生命進(jìn)程周期。
200 php
3000 :static content prefork,200
每個(gè)php進(jìn)程和httpd進(jìn)程

http包归,stateless 無(wú)狀態(tài)的

apache锨推,
DSO:動(dòng)態(tài)共享模塊 dynamic share object
將php做成apache的模塊。提高處理速度公壤,處理一個(gè)請(qǐng)求换可,只需要一個(gè)程序。

Fastcgi:
fPM:fastcgi php MOdules
動(dòng)態(tài)和靜態(tài)的處理進(jìn)程分離:
安裝php的服務(wù)器厦幅,事先生成空閑進(jìn)程等待Apache的請(qǐng)求沾鳄。php就有自我管理的能力。類似于prefork确憨,如同C/S架構(gòu)译荞,apache是客戶端,php是服務(wù)器休弃。
apache +php
CGI
Modules
FastCGI

Nginx+fpm

yum install php

php-common-5.3.3-22.el6.x86_64 通用組件
php-cli-5.3.3-22.el6.x86_64 命令行工具
php-5.3.3-22.el6.x86_64
php-cli-5.3.3-22.el6.x86_64
php-common-5.3.3-22.el6.x86_64
php-5.3.3-22.el6.x86_64

[root@li ~]# rpm -ql php
/etc/httpd/conf.d/php.conf  web服務(wù)器配置文件 
/usr/lib64/httpd/modules/libphp5.so 動(dòng)態(tài)共享庫(kù)
/var/lib/php/session
/var/www/icons/php.gif


vim /etc/httpd/conf.d/php.conf 
apache基于不同的MPM吞歼,php也會(huì)選擇不同的模塊。
DirectoryIndex index.php  默認(rèn)主頁(yè)

vim /etc/php.ini
segment 分段式
[name]
配置項(xiàng)
注釋用;表示

pHp只保存指令和命令塔猾,不保存服務(wù)器的數(shù)據(jù)浆熔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子医增,更是在濱河造成了極大的恐慌慎皱,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叶骨,死亡現(xiàn)場(chǎng)離奇詭異茫多,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)忽刽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)天揖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人跪帝,你說(shuō)我怎么就攤上這事今膊。” “怎么了伞剑?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵斑唬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我黎泣,道長(zhǎng)恕刘,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任抒倚,我火速辦了婚禮褐着,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘托呕。我一直安慰自己含蓉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布项郊。 她就那樣靜靜地躺著谴餐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪呆抑。 梳的紋絲不亂的頭發(fā)上岂嗓,一...
    開(kāi)封第一講書(shū)人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音鹊碍,去河邊找鬼厌殉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侈咕,可吹牛的內(nèi)容都是我干的公罕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼耀销,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼楼眷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤罐柳,失蹤者是張志新(化名)和其女友劉穎掌腰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體张吉,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡齿梁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肮蛹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勺择。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖伦忠,靈堂內(nèi)的尸體忽然破棺而出省核,到底是詐尸還是另有隱情,我是刑警寧澤昆码,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布气忠,位于F島的核電站,受9級(jí)特大地震影響未桥,放射性物質(zhì)發(fā)生泄漏笔刹。R本人自食惡果不足惜芥备,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一冬耿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萌壳,春花似錦亦镶、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至尺借,卻和暖如春绊起,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背燎斩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工虱歪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人栅表。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓笋鄙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親怪瓶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子萧落,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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