我認(rèn)為有七個(gè)理由可以說明PHP比ASP更良好:
-
1、速度、速度、速度
當(dāng)我一次運(yùn)行PHP腳本程序時(shí),我不禁對(duì)自己說:“太快了”,當(dāng)時(shí)我是在儀態(tài)166MHZ的機(jī)器上運(yùn)行我的程序的,但運(yùn)行的速度仍然很快。
ASP是永遠(yuǎn)也不會(huì)象PHP這樣快的,因?yàn)锳SP是建立在COM體系結(jié)構(gòu)之上的。當(dāng)用VBScript寫ASP腳本時(shí),實(shí)際上實(shí)在使用COM的對(duì)象,當(dāng)向用戶瀏覽器發(fā)送信息時(shí),它用的是Response對(duì)象的write方法,當(dāng)它訪問數(shù)據(jù)庫和文件系統(tǒng)的時(shí)候,它用的是其他的COM對(duì)象。這些COM對(duì)象的使用使運(yùn)行速度下降。
在PHP代碼中,所有的工作都運(yùn)行在PHP的內(nèi)存空間中,也就是說PHP不是基于COM對(duì)象的,所以的他的運(yùn)行速度會(huì)快一些。
下面是我們?cè)贛SSQL7 40次運(yùn)行一個(gè)查詢語句的執(zhí)行時(shí)間統(tǒng)計(jì):
PHP Querying MSSQL7 時(shí)間(秒)
用 MSSQL extension 01.88
用 ODBC extension 09.54
用 ODBC via COM (ADO) 17.28
用 OLEDB via COM 06.19
當(dāng)我們使用PHP.ODBC,訪問數(shù)據(jù)庫用了9.54秒,而用COM接口去連接數(shù)據(jù)庫需要比PHP所用的時(shí)間高80%。
OLEDB是微軟的一種高速訪問數(shù)據(jù)庫的技術(shù),他比ODBC要快。但當(dāng)我們所PHP和OLEDB的效率實(shí)驗(yàn)時(shí),結(jié)果是PHP的整體性能比OLEDB高200%,如此的出一個(gè)結(jié)論,如果不采用COM可以獲得較快的執(zhí)行速度。
當(dāng)然PHP的執(zhí)行速度還不是較快的,但我們才剛剛開始起步,我們會(huì)逐步的完善他,而且PHP是一種開放源代碼編程語言,世界上許多程序員在不斷的完善他的技術(shù),相信他一定會(huì)比非開放源代碼系統(tǒng)獲得更高的執(zhí)行速度的。
2、知名內(nèi)存管理
在IIS4下,一個(gè)ASP腳本header.asp,如果被20個(gè)頁面所包含,那么運(yùn)行的時(shí)候,在內(nèi)存當(dāng)中會(huì)保留這20個(gè)header.asp的編譯副本,IIS5解決了這個(gè)問題,但只有windows2000才支持IIS5,由于這種IIS5的不能向下兼容的原因,許多服務(wù)器仍然要使用IIS4下的低級(jí)的內(nèi)存管理。
而在PHP中,不會(huì)存在這種問題,只有當(dāng)require時(shí),才會(huì)調(diào)用某個(gè)include文件。
3、沒有后顧之憂
我非常憎恨的一件事情就是會(huì)買到一件不放心的產(chǎn)品,比如當(dāng)你買了一輛汽車,但由于發(fā)動(dòng)機(jī)是壞的,你需要更換他;當(dāng)你買了一棟房子的時(shí)候,你要去修補(bǔ)漏雨的屋頂。
那么ASP舊鄉(xiāng)這些產(chǎn)品一樣,當(dāng)你買了ASP之后,如果你需要加密技術(shù),你就要買ASPEncrypt;當(dāng)你需要Email管理時(shí),你就要買ServerObjets
Qmail;當(dāng)你需要文件上傳時(shí),你還要買Artisans SA-FileUp.
4、MySQL使PHP更精彩
PHP與MySQL的組合既簡(jiǎn)單又精彩。PHP有許多管理和維護(hù)MySQL的工具,對(duì)MySQk的支持是較全面的。許多有用的函數(shù)如mysql_insert_id和mysql_affected_rows等,其他的數(shù)據(jù)庫則沒有。
ASP和PHP都是中型網(wǎng)站的較理想的解決方案,但PHP與MySQL的緊密結(jié)合使PHP更加優(yōu)越。
MySQL的虛度比Microsoft Access速度快,Mssql和Oracle速度比MySQL要快,可是費(fèi)用較高。
5、Java和C++的變成風(fēng)格
這個(gè)優(yōu)點(diǎn)只是一個(gè)看法。
我知道你不會(huì)相信一個(gè)Visual
Basic程序員會(huì)因?yàn)镻HP有Java和C++的編程風(fēng)格而轉(zhuǎn)向使用PHP,但你會(huì)相信有許多人還是喜歡Java和C++的,PHP是一種具有這兩種語言的編程風(fēng)格的較容易學(xué)習(xí)的語言。
PHP支持結(jié)構(gòu)化編程,在VB因?yàn)樗睦^承性使用類還是較少的。而PHP的象Java和C++一樣的繼承性使一個(gè)大型的程序中到處都充滿了類的影子。
6、Bug的處理
你是否曾經(jīng)要求Microsoft修改ASP的一些Bug呢?如果你不是一個(gè)象Boeing一樣的組織,你無法獲得迅速而恰當(dāng)?shù)男薷模衙串?dāng)你遇到Bug而停止工作時(shí),如果這個(gè)Bug不修改,你將無法繼續(xù)你的工作的。
PHP,當(dāng)你發(fā)現(xiàn)Bug時(shí),你可以修改他,如果你沒有專家的水平,你可以請(qǐng)專家修改,并且你的修改會(huì)得到開放代碼組織的接受和認(rèn)可。
7、移植性
Microsoft經(jīng)常修改ASP,下一版本叫ASP+,現(xiàn)在已經(jīng)開始測(cè)試。我相信他們會(huì)修改許多我曾經(jīng)提到過的問題。但也無庸質(zhì)疑的,Microsoft會(huì)將你限制在他們的產(chǎn)品范圍之內(nèi)的。
我曾經(jīng)是一個(gè)蘋果機(jī)的程序員,當(dāng)windows95問世后,我開始轉(zhuǎn)變,但許多原來的代碼都無法在windows95下運(yùn)行,這些代碼現(xiàn)在被放在一邊,我非常的遺憾。所以我不希望在windows下再出現(xiàn)這樣的悲劇。
不要忘記Novell曾經(jīng)也象Microsoft的網(wǎng)絡(luò)操作系統(tǒng)一樣熱及一時(shí),但現(xiàn)在已經(jīng)沒有許多人用了,那么Microsoft也會(huì)這樣的。
我找到了PHP,我仍舊在windows下工作,但我知道PHP代碼可以運(yùn)行在Solaris、Linux和許多其他的操作系統(tǒng)中,我的心里感到安慰。