直播中
PHP:Personal HomePage
PHP是一個(gè)什么原因出現(xiàn)的呢?它是一個(gè)技術(shù)人員希望能用一個(gè)快速的方面來完成他自己的個(gè)人主頁中的一個(gè)小應(yīng)用。而在他一發(fā)不可收時(shí)出現(xiàn)了php,它使一個(gè)人能在多種操作系統(tǒng)下迅速的完成一個(gè)輕型的Web應(yīng)用。所以在短短的幾年里,php迅速的升級(jí)了它的版本,同時(shí)在GNU的世界里找到了一個(gè)青梅竹馬的伙伴----Apache。這終于讓php有了基礎(chǔ),能在一個(gè)最佳的環(huán)境中運(yùn)行,同時(shí)由于兩個(gè)產(chǎn)品都是公開源代碼的產(chǎn)品,所以大家可以使用它們的源代碼將這兩個(gè)產(chǎn)品用最完美的方式結(jié)合到一起,使用起來就如一個(gè)產(chǎn)品一樣。個(gè)人認(rèn)為php是自由軟件在web應(yīng)用平臺(tái)上一個(gè)決勝的工具,如果沒有php的出現(xiàn),還會(huì)有許多人認(rèn)為自由軟件就代表了對(duì)開發(fā)人員的高技術(shù)要求、難記的代碼、復(fù)雜的工具.....php使一個(gè)會(huì)使用basic的人員在極短的時(shí)間里快迅學(xué)習(xí)并完成用戶需要的應(yīng)用。
怎么說php呢?如果說ASP是一個(gè)COM,哪么php說的更精確了可以說php是一個(gè)純粹的Script翻譯器。這也是php由3升級(jí)為4的一個(gè)重大原因,在4這個(gè)版本里它重寫了語法分析器,從而加快了php整體的效能。而且從中你也就會(huì)明白為什么php需要支持這種或是那種擴(kuò)充功能時(shí)它一定要與相應(yīng)系統(tǒng)的lib庫進(jìn)行再編繹的原因。正因?yàn)樗钦诘摹胺g器”,所以它是將script翻譯成為需要執(zhí)行的函數(shù),再去執(zhí)行它們,外部擴(kuò)充不能由一些“動(dòng)態(tài)加載”的方式進(jìn)行,所以只能靜態(tài)的編繹進(jìn)php中(這只能在windows中除外)。
強(qiáng)勢(shì):
1、一種能快速學(xué)習(xí)、跨平臺(tái)、有良好數(shù)據(jù)庫交互能力的開發(fā)語言。ASP比不上它的就是這種跨平臺(tái)能力了,而正是它的這種能力讓Unix/Linux有了一種與ASP媲美的開發(fā)語言。語法簡(jiǎn)單、書寫容易、現(xiàn)在市面上也有了大量的書,同時(shí)Internet上也有大量的代碼可以共享,對(duì)于一個(gè)初學(xué)者想學(xué)些“高深的Unix”下的開發(fā)來說是一個(gè)決好的入手點(diǎn)。
2、與Apache及其它擴(kuò)展庫結(jié)合緊密。php與Apache可以以靜態(tài)編繹的方式結(jié)合起來,而與其它的擴(kuò)展庫也可以用這樣的方式結(jié)合(除外的就是Windows平臺(tái)了)。這樣的方式的最大的好處就是最大化的利用了cpu時(shí)和內(nèi)存,同時(shí)極為有效的利用了apache的高性能的吞吐能力。同時(shí)外部的擴(kuò)展也是靜態(tài)連編,從而達(dá)到了最快的運(yùn)行速度。由于與數(shù)據(jù)庫的接口也使用了這樣的方式,所以使用的是本地化的調(diào)用,這也讓數(shù)據(jù)庫發(fā)揮了最佳效能。
3、良好的安全性。由于php本身的代碼開放所以它的代碼在許多工程師手中進(jìn)行了檢測(cè),同時(shí)它與apache編繹在一起的方式也可以讓它具有靈活的安全設(shè)定。所以到現(xiàn)在為止,php具有了公認(rèn)的安全性能。
弱勢(shì):
1、數(shù)據(jù)庫支持的極大變化。由于php的所有的擴(kuò)展接口都是獨(dú)立團(tuán)隊(duì)開發(fā)完成的,同時(shí)在開發(fā)時(shí)為了形成相應(yīng)數(shù)據(jù)的個(gè)性化操作,所以php雖然支持許多數(shù)據(jù)庫,可是針對(duì)每種數(shù)據(jù)庫的開發(fā)語言都完全不同。這樣形成針對(duì)一種數(shù)據(jù)庫的工發(fā)工作,在數(shù)據(jù)庫進(jìn)行升級(jí)后需要開發(fā)人員進(jìn)行幾乎全部的代碼更改工作。而為了讓應(yīng)用支持更多種的數(shù)據(jù)庫,就需要開發(fā)人員將同樣的數(shù)據(jù)庫操作使用不同的代碼寫出n種代碼庫出來,讓程序員的工作量大大增大。
2、安裝復(fù)雜。由于php的每一種擴(kuò)充模塊并不是完全由php本身來完成,需要許多外部的應(yīng)用庫,如圖形需要gd庫、LDAP需要LDAP庫.……這樣在安裝完成相應(yīng)的應(yīng)用后,再聯(lián)編進(jìn)php中來。這也就是我以前在代碼聯(lián)盟新聞組中對(duì)網(wǎng)友所說的一定要在FreeBSD/Linux/Unix下運(yùn)行php的原因。只有在這些環(huán)境下才能方便的編繹對(duì)應(yīng)的擴(kuò)展庫。這些都是一般開發(fā)人員在使用php前所先要面對(duì)的問題,正是這樣的問題讓許多開發(fā)人員轉(zhuǎn)而使用其它的開發(fā)語言,必竟Unix沒有那么多的用戶。
3、缺少企業(yè)級(jí)的支持。沒有組件的支持,哪么所有的擴(kuò)充就只能依靠php開發(fā)組所給出的接口,事實(shí)上這樣的接口還不夠多。同時(shí)難以將集群、應(yīng)用服務(wù)器這樣的特性加入到系統(tǒng)中去。而一個(gè)大型的站點(diǎn)或是一個(gè)企業(yè)級(jí)的應(yīng)用一定需要這樣的支持的。注:在php的4.0版本以后加入了對(duì)servlet/javabean的支持,也許這樣的支持會(huì)在以后的版本中更加增強(qiáng),也許這樣的支持會(huì)是php以后的企業(yè)級(jí)支持的起點(diǎn)。
4、缺少正規(guī)的商業(yè)支持。這也是自由軟件一向的缺點(diǎn),我想在國內(nèi)php的開發(fā)人員正在快速增加,相信在不久的將來,這樣的支持能多起來。
5、無法實(shí)現(xiàn)商品化應(yīng)用的開發(fā)。由于php沒有任何編繹性的開發(fā)工作,所有的開發(fā)都是基于腳本技術(shù)來完成的。所以所有的源代碼都無法編譯,所以做完成的應(yīng)用只能是自己或是內(nèi)部使用,無法實(shí)現(xiàn)商品化。
總結(jié):
適用人群:熟悉Unix環(huán)境,需要在最少的投入下完成快速的應(yīng)用開發(fā)。
適用平臺(tái):FreeBSD/Linux/Unix操作系統(tǒng)、Apache服務(wù)器適用應(yīng)用:Internet高訪問量、快速數(shù)據(jù)庫開發(fā)的應(yīng)用。
學(xué)習(xí)方式:Internet上國內(nèi)豐富的資源Internet上豐富的源代碼資源,完全可以參考這樣的例程來完成自己的應(yīng)用。市場(chǎng)上最近出版的好幾本php手冊(cè)。
推薦開發(fā)工具:Home Site/PHPEd
推薦開發(fā)環(huán)境:FreeBSD 4.1/RedHat 6.1操作系統(tǒng)/Apache 1.3.12/MySQL 3.22/P 200/64M RAM/9G HD
推薦應(yīng)用環(huán)境(最少):FreeBSD 3.5/MySQL 3.22/Apache 1.3.12/P 200/128M RAM/9G HD
推薦應(yīng)用環(huán)境(最佳):FreeBSD 3.5/Sybase 11/Apache 1.3.12/P III 500/512M RAM/18G HD