LAMP 之 PHP 相關(guān)介紹

1 概述
php: 腳本編程語(yǔ)言、嵌入到html中的嵌入式web程序語(yǔ)言,基于zend編譯成opcode(二進(jìn)制格式的字節(jié)碼蜡吧,重復(fù)運(yùn)行毫蚓,可省略編譯環(huán)境)
相關(guān)代碼部分,見(jiàn)博客 http://ghbsunny.blog.51cto.com/7759574/1970717
2 PHP簡(jiǎn)介
.官網(wǎng):http://www.php.net/
.PHP是通用服務(wù)器端腳本編程語(yǔ)言昔善,主要用于web開發(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年開始開發(fā)PHP袖订,它是初是一組被Rasmus Lerdorf稱作“Personal Home Page Tool” 的Perl腳本氮帐,這些腳本可以用于顯示作者的簡(jiǎn)歷并記錄用戶對(duì)其網(wǎng)站的訪問(wèn)。后來(lái)洛姑,Rasmus Lerdorf使用C語(yǔ)言將這些Perl腳本重寫為CGI程序上沐,還為其增加了運(yùn)行Web forms的能力以及與數(shù)據(jù)庫(kù)交互的特性,并將其重命名為“Personal Home Page/Forms Interpreter”或“PHP/FI”楞艾。此時(shí)参咙,PHP/FI已經(jīng)可以用于開發(fā)簡(jiǎn)單的動(dòng)態(tài)web程序了,這即PHP1.0硫眯。1995年6月RasmusLerdorf把它的PHP發(fā)布于comp.infosystems.www.authoring.cgiUsenet討論組蕴侧,從此PHP開始走進(jìn)人們的視野。1997年两入,其2.0版本發(fā)布净宵。
.1997年,兩名以色列程序員Zeev Suraski和AndiGutmans重寫的PHP的分析器(parser)成為PHP發(fā)展到3.0的基礎(chǔ)裹纳,而且從此將PHP重命名為PHP: HypertextPreprocessor择葡。此后,這兩名程序員開始重寫整個(gè)PHP核心剃氧,并于1999年發(fā)布了Zend Engine 1.0敏储,這也意味著PHP 4.0的誕生。2004年7月朋鞍,Zend Engine 2.0發(fā)布已添,由此也將PHP帶入了PHP 5時(shí)代。PHP5包含了許多重要的新特性滥酥,如增強(qiáng)的面向?qū)ο缶幊痰闹С指琛⒅С諴DO(PHP Data Objects)擴(kuò)展機(jī)制以及一系列對(duì)PHP性能的改進(jìn)
3 PHP Zend Engine
.Zend Engine是開源的、PHP腳本語(yǔ)言的解釋器恨狈,它最早是由以色列理工學(xué)院(Technion)的學(xué)生AndiGutmans和Zeev
Suraski所開發(fā)疏哗,Zend也正是此二人名字的合稱呛讲。后來(lái)兩人聯(lián)合創(chuàng)立了ZendTechnologies公司
.Zend Engine 1.0于1999年隨PHP 4發(fā)布禾怠,由C語(yǔ)言開發(fā)且經(jīng)過(guò)高度優(yōu)化返奉,并能夠做為PHP的后端模塊使用。ZendEngine為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)存中弦讽;第二階段是使用ZendEngine去執(zhí)行這些轉(zhuǎn)換后的Opcode
4 PHP的Opcode
.Opcode是一種PHP腳本編譯后的中間語(yǔ)言污尉,類似于Java的ByteCode,或者.NET的MSL。PHP執(zhí)行PHP腳本代碼一般會(huì)經(jīng)過(guò)如下4個(gè)步驟(掃描-->分析-->編譯-->執(zhí)行)(確切的來(lái)說(shuō)往产,應(yīng)該是PHP的語(yǔ)言引擎Zend)
1被碗、掃描:Scanning詞法分析,將PHP代碼轉(zhuǎn)換為語(yǔ)言片段(Tokens)
2、分析:Parsing語(yǔ)義分析,將Tokens轉(zhuǎn)換成簡(jiǎn)單而有意義的表達(dá)式
3仿村、編譯:Compilation將表達(dá)式編譯成Opocdes
4锐朴、執(zhí)行:Execution順次執(zhí)行Opcodes,每次一條蔼囊,從而實(shí)現(xiàn)PHP腳本的功能
** 5 php配置**
.php.ini的核心配置選項(xiàng)文檔:
http://php.net/manual/zh/ini.core.php
.php.ini配置選項(xiàng)列表:
http://php.net/manual/zh/ini.list.php
php的模式為模塊模式焚志,和apache結(jié)合在一起,以模塊的方式集合在apache的http服務(wù)里畏鼓,提供服務(wù)
php也可以獨(dú)立的模式酱酬,和apache不在同一機(jī)器上,通過(guò)協(xié)議和apache進(jìn)行通信
.php:腳本語(yǔ)言解釋器
.配置文件:/etc/php.ini,/etc/php.d/*.ini
.配置文件在php解釋器啟動(dòng)時(shí)被讀取
.對(duì)配置文件的修改生效方法
/etc/httpd/conf.d/php.conf配置相關(guān)模塊
當(dāng)滿足后綴為.php的文件云矫,就給 x-httpd-php程序處理
Modules:重啟httpd服務(wù)
FastCGI:重啟php-fpm服務(wù)
./etc/php.ini配置文件格式:
/etc/php.ini[foo]:SectionHeaderdirective = value
注釋符:較新的版本中膳沽,已經(jīng)完全使用;進(jìn)行注釋

:純粹的注釋信息,取消#號(hào)让禀,該行代碼不能使用贵少,僅注釋信息

;:用于注釋可啟用的directive,取消堆缘;號(hào)滔灶,該行代碼可以使用
/etc/php.inimax_execution_time= 30 最長(zhǎng)執(zhí)行時(shí)間30smemory_limit 128M 生產(chǎn)不夠,可調(diào)大display_errors off 調(diào)試使用吼肥,生產(chǎn)不要打開录平,否則可能暴露重要信息display_startup_errors off 建議關(guān)閉,php啟動(dòng)時(shí)的報(bào)錯(cuò)post_max_size 8M 最大上傳數(shù)據(jù)大小缀皱,生產(chǎn)可能臨時(shí)要調(diào)大斗这,比下面項(xiàng)要大,根據(jù)生產(chǎn)環(huán)境決定upload_max_filesize 2M 最大上傳文件啤斗,生產(chǎn)可能要調(diào)大max_file_uploads = 20 同時(shí)上傳最多文件數(shù)date.timezone =Asia/Shanghai 指定時(shí)區(qū)?short_open_tag=on 開啟短標(biāo)簽,如<?phpinfo();?>表箭,php的一種格式,需要啟用該配置才支持短標(biāo)簽
更改httpd.conf,設(shè)置主頁(yè)為php文件
vim /etc/httpd/conf/httpd.conf<IfModuledir_module> DirectoryIndex index.php index.html</IfModule>
6 php語(yǔ)言格式


**格式一
**
<h1><?php ...phpcode... ?></h1>
格式二
<?php ...phpcode... ?>
**例子 **
例子一
vim a.php 注意后綴是php
<h1><?php echo "Hello world!" ?></h1>
例子二
<?phpecho "<h1>Helloworld!</h1>"?>
例子三
.php測(cè)試代碼
<?phpecho date("Y/m/d");phpinfo();;phpinfo()是內(nèi)部函數(shù)钮莲,可以調(diào)出php網(wǎng)頁(yè)的信息?>
例子四 **
Php使用mysql擴(kuò)展連接數(shù)據(jù)庫(kù)
這里要安裝php-mysql包才能測(cè)試 yum –y installphp-mysql;
.使用mysql擴(kuò)展連接數(shù)據(jù)庫(kù)的測(cè)試代碼
<?php$conn = mysql_connect(‘mysqlserver','username','password');if ($conn)echo "OK";elseecho "Failure";mysql_close();?>
** 例子五

Php使用mysqli擴(kuò)展連接數(shù)據(jù)庫(kù)
i為improve的意思免钻,這個(gè)是現(xiàn)在主流的連接方法彼水,mysql被淘汰了
面向?qū)ο蟮倪B接方式,這種連接方式后臺(tái)數(shù)據(jù)庫(kù)只能是mysql,但是pdo(phpdata object)可以連接其他數(shù)據(jù)庫(kù)
.Php使用mysqli擴(kuò)展連接數(shù)據(jù)庫(kù)的測(cè)試代碼
<?php$mysqli=new mysqli("mysqlserver",“username",“password");if(mysqli_connect_errno()){echo "連接數(shù)據(jù)庫(kù)失敗!";$mysqli=null;exit;}echo "連接數(shù)據(jù)庫(kù)成功!";$mysqli->close();?>
7 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)
遵循PHPLicense的開源框架盯桦,PHPopcode緩存加速器,目前的版本不適用于PHP 5.4
項(xiàng)目地址http://pecl.php.net/package/APC
.2渤刃、eAccelerator
源于TurckMMCache拥峦,早期的版本包含了一個(gè)PHPencoder和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/,收錄EPEL源
.4璃哟、ZendOptimizer和ZendGuard 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铐伴、NuSpherePhpExpress
NuSphere的一款開源PHP加速器,它支持裝載通過(guò)NuSphere PHPEncoder編碼的PHP程序文件俏讹,并能夠?qū)崿F(xiàn)對(duì)常規(guī)PHP文件的執(zhí)行加速当宴。項(xiàng)目地址,http://www.nusphere.com/products/phpexpress.htm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泽疆,一起剝皮案震驚了整個(gè)濱河市户矢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殉疼,老刑警劉巖梯浪,帶你破解...
    沈念sama閱讀 221,331評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瓢娜,居然都是意外死亡挂洛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門眠砾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)虏劲,“玉大人,你說(shuō)我怎么就攤上這事∑馕祝” “怎么了励堡?”我有些...
    開封第一講書人閱讀 167,755評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吻育。 經(jīng)常有香客問(wèn)我,道長(zhǎng)淤井,這世上最難降的妖魔是什么布疼? 我笑而不...
    開封第一講書人閱讀 59,528評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮币狠,結(jié)果婚禮上游两,老公的妹妹穿的比我還像新娘。我一直安慰自己漩绵,他們只是感情好贱案,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,526評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著止吐,像睡著了一般宝踪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碍扔,一...
    開封第一講書人閱讀 52,166評(píng)論 1 308
  • 那天瘩燥,我揣著相機(jī)與錄音,去河邊找鬼不同。 笑死厉膀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的二拐。 我是一名探鬼主播服鹅,決...
    沈念sama閱讀 40,768評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼百新!你這毒婦竟也來(lái)了企软?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,664評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤饭望,失蹤者是張志新(化名)和其女友劉穎澜倦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杰妓,經(jīng)...
    沈念sama閱讀 46,205評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藻治,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,290評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了巷挥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桩卵。...
    茶點(diǎn)故事閱讀 40,435評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雏节,到底是詐尸還是另有隱情胜嗓,我是刑警寧澤,帶...
    沈念sama閱讀 36,126評(píng)論 5 349
  • 正文 年R本政府宣布钩乍,位于F島的核電站辞州,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏寥粹。R本人自食惡果不足惜变过,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,804評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涝涤。 院中可真熱鬧媚狰,春花似錦、人聲如沸阔拳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)糊肠。三九已至辨宠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間货裹,已是汗流浹背彭羹。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泪酱,地道東北人派殷。 一個(gè)月前我還...
    沈念sama閱讀 48,818評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像墓阀,于是被迫代替她去往敵國(guó)和親毡惜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,442評(píng)論 2 359

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