當前位置:首頁 » 編程語言 » php的速度

php的速度

發布時間: 2025-10-15 10:46:28

『壹』 怎樣提高php運行速度

使用PHP的最大1個優勢就是速度快。一般情況下,PHP總是具有足夠的速度支持Web內容動態生成,許多時候甚至無法找出比它更快的方法。然而,當面對龐大的訪問量、高負荷的應用、有限的帶寬,以及其他各種帶來性能瓶頸的因素時,就需要考慮怎樣提高PHP的性能了。
步驟/方法
代碼優化
代碼優化不僅僅是寫出干凈和清晰的代碼,而是對代碼進行一定的簡化。可以使用Zend Optimizer來自動幫助完成這些繁雜的工作。Zend Optimizer可以從Zend Technologies的網站http://www.zend.com/免費得到,但必須同意它的許可約定,因為它不是以GPL方式發行的。它的原理很簡單,即通過檢測Zend引擎產生的中間代碼,並對它進行優化,從而獲得更高的執行速度。
在使用了Zend Optimizer後,復雜的PHP源程序的執行效率馬上會得到顯著提高,缺點是優化後的代碼可讀性下降,給代碼修改帶來困難。
Zend Optimizer的安裝方法非常簡單,只要根據用戶使用的平台,下載相關的預編譯版本,把下面2行代碼加入到php.ini文件中,重新啟動Web 伺服器就行了:
zend_optimizer.optimization_level=15
zend_extension=″/path/to/ZendOptimizer.so″
zend_loader.enable=Off
額外增加的第三行代碼是可選的,因為禁用zend_loader將會使優化速度更快。需要注意的是,只有在不使用Zend Encoder Runtime的時候,才可以禁用zend_loader。
使用緩存
如果PHP程序的規模很大,那麼提高速度的辦法就是使用緩存。現在已經有許多緩存方案可供選擇,其中包括Zend Cache、APC和Afterburner Cache。
上面這幾種都是「緩存模塊」(caching moles)。第一次調用PHP文件時,緩存模塊從PHP源代碼生成一些中間代碼,並把這些中間代碼存儲在Web伺服器的內存中。以後再調用這些文件時,就可以直接使用內存中「編譯」過的代碼。這種方法確實能夠改善應用的性能,因為它使得磁碟訪問量減低到了最少的程度(代碼已經讀取和解析),代碼直接在內存中運行,使得伺服器響應請求的速度大大提高。
當然,緩存模塊還會監視PHP源文件的變化,必要時會重新緩存頁面,從而防止用戶得到的頁面仍舊由過時的PHP代碼生成。由於緩存模塊能夠明顯地降低伺服器的負載,提高PHP應用的響應效率,因此它們非常適合於負載較大的網站使用。
Zend Cache是Zend Technologies公司開發的商業軟體。在第一次運行後,PHP頁面的運行速度立刻會有很大的提高,伺服器的空閑資源也更多了。缺點是它不是免費的,但性價比還是很高的。
Afterburner Cache是Bware Technologies公司開發的免費緩存模塊。功能與Zend Cache基本一樣,但提高性能方面比不上Zend Cache。
APC(Alternative PHP Cache)是由Community Connect公司開發的另一種免費緩存模塊,目前版本是2.0.4,可以從http://pecl.php.net/package/APC獲得。對於產品應用來說,它的性能很穩定,而且也能在很大程度上提高響應請求的速度。
壓縮網頁內容
影響站點的訪問速度還有1個重要因素,那就是下載速度。解決的辦法就是壓縮網頁內容。對於純文本內容而言,HTTP壓縮技術可壓縮至原大小的40%以下,從而提供60%以上的數據傳輸節約。雖然Web伺服器會因為壓縮導致CPU佔用的略微上升,但可以節約大量用於傳輸的網路IO。
根據IETF規范,大部分瀏覽器都支持使用gzip壓縮演算法進行內容壓縮。也就是說,可以先用gzip壓縮網頁內容,然後發送到客戶端瀏覽器,瀏覽器在接收的時候會自動解壓數據,再顯示頁面。這個過程對用戶來說,是完全透明的。同樣,壓縮Web頁面的內容也有不同的方法。
Mod_gzip是1種開放源代碼的、標準的Apache模塊,也叫互聯網內容加速模塊。可以將它和Apache一起編譯,也可以作為DSO使用。相對於普通的瀏覽過程,它可以節省40%左右的流量。Mod_gzip不僅可以壓縮靜態的內容,如HTML、XML,而且對動態生成的,包括sql、Java、WML、VRML等產生的內容,在伺服器端進行實時壓縮並傳輸,其壓縮效率驚人,一般都為60%~85%。
壓縮動態網頁的內容,還可以使用class.gzip來對.php文件編碼,class.gzip通過在PHP腳本的開頭和結尾調用它的一些函數來壓縮網頁內容。如果整個站點都需要這樣的壓縮,可以在php.ini文件中的auto_prepend和auto_append中調用這些函數,但是會佔用一定的系統開銷。
PHP4.0.4推出了1種新的輸出緩沖的處理手段—ob_gzhandler,它的作用和class.gzip完全一樣,區別是可以直接把它加到php.ini 文件中,語法如下:
output_handler = ob_gzhandler;
這樣將激活PHP的輸出緩沖功能,並在發送內容前進行壓縮。如果不想在這里設置,只在需要的地方才改變這個默認設置(不壓縮),只要在需要壓縮的PHP源程序目錄中,修改一下.htaccess文件就行了,語法如下:
php_value output_handler ob_gzhandler
或者直接在PHP代碼中調用它:
ob_start(″ob_gzhandler″);
輸出緩沖的效果確實很理想,並且不會為伺服器帶來額外的系統開銷。要注意的一點是Netscape Communicator不支持圖像的壓縮。因此除非知道訪問者都使用Internet Explorer,否則必須禁止壓縮jpeg和gif圖象。
其它技巧
編程時,使用一些小技巧也可以加快PHP的運行速度:
(1)用i+=1代替i=i+1,既符合c/c++的習慣,效率相對還更高。
(2)盡可能使用PHP內部函數。
(3)能使用單引號字元串時,盡量使用單引號字元串。單引號字元串的效率要高於雙引號字元串。
(4)用foreach代替while遍歷數組,foreach的效率明顯高於while循環,而且不需要調用reset函數。

『貳』 asp與php的優缺點

PHP比ASP更優秀:

1、速度、速度、速度
當我第一次運行PHP腳本程序時,我不禁對自己說:「太快了」,當時我是在儀態166MHZ的機器上運行我的程序的,但運行的速度仍然很快。
ASP是永遠也不會象PHP這樣快的,因為ASP是建立在COM體系結構之上的。當用VBScript寫ASP腳本時,實際上實在使用COM的對象,當向用戶瀏覽器發送信息時,它用的是Response對象的write方法,當它訪問資料庫和文件系統的時候,它用的是其他的COM對象。這些COM對象的使用使運行速度下降。
在PHP代碼中,所有的工作都運行在PHP的內存空間中,也就是說PHP不是基於COM對象的,所以的他的運行速度會快一些。
下面是我們在MSSQL740次運行一個查詢語句的執行時間統計:
PHP Querying MSSQL7 時間(秒)
用 MSSQL extension 01.88
用 ODBC extension 09.54
用 ODBC via COM (ADO) 17.28
用OLEDB via COM 06.19
當我們使用PHP.ODBC,訪問資料庫用了9.54秒,而用COM介面去連接資料庫需要比PHP所用的時間高80%。
OLEDB是微軟的一種高速訪問輪絕資料庫的技術,他比ODBC要快。但當我們所PHP和OLEDB的效率實驗時,結果是PHP的整體性能比OLEDB高亮檔200%,如此的出一個結論,如果不採用COM可以獲得較快的執行速度。
當然PHP的執行速度還不是最快的,但我們才剛剛開始起步,我們會逐步的完善他,而且PHP是一種開放源代碼編程語言,世界上許多程序員在不斷的完善他的技術,相信他一定會比非開放源代碼系統獲得更高的執行速度的。

2、高級內存管理
在IIS4下,一個ASP腳本header.asp,如果被20個頁面所包含,那麼運行的時候,在內存當中會保留這20個header.asp的編譯副本,IIS5解決了這個問題,但只有windows2000才支持IIS5,由於這種IIS5的不能向下兼容的原因,許多伺服器仍然要使用IIS4下的低級的內存管理。
而在PHP中,不會存在這種問題,只有當require時,才會調用某個include文件。

3、沒有後顧之憂
我非常憎恨的一件事情就是會買到一件不放心的產品,比如當你買了一輛汽車,但由於發動機是壞的,你需要更換他;當你買了一棟房子的時候,你要去修補漏雨的屋頂。
那麼ASP舊鄉這些產品一樣,當你買了ASP之後,如果你需要加密技術,你就要買ASPEncrypt;當你需要Email管理時,你就要買ServerObjets Qmail;當你需要文件上傳時,你還要買Artisans SA-FileUp.

4、MySQL使PHP更精彩
PHP與MySQL的組合既簡單又精彩。PHP有許多管理和維護MySQL的工具,對MySQk的支持是最全面的。許多有用的函數如mysql_insert_id和mysql_affected_rows等,其他的資料庫則沒有。
ASP和PHP都是中型網站的較理想的解決方案,但PHP與MySQL的緊密結合使PHP更加優越。
MySQL的虛度比Microsoft Access速度快,Mssql和Oracle速度比MySQL要快,可是費用較高。

5、Java和C++的變成風格
這個優點只是一個看法。
我知道你不會相信一個臘鍵姿Visual Basic程序員會因為PHP有Java和C++的編程風格而轉向使用PHP,但你會相信有許多人還是喜歡Java和C++的,PHP是一種具有這兩種語言的編程風格的較容易學習的語言。
PHP支持結構化編程,在VB因為他的繼承性使用類還是較少的。而PHP的象Java和C++一樣的繼承性使一個大型的程序中到處都充滿了類的影子。

6、Bug的處理。
你是否曾經要求Microsoft修改ASP的一些Bug呢?如果你不是一個象Boeing一樣的組織,你無法獲得迅速而恰當的修改,把么當你遇到Bug而停止工作時,如果這個Bug不修改,你將無法繼續你的工作的。
PHP,當你發現Bug時,你可以修改他,如果你沒有專家的水平,你可以請專家修改,並且你的修改會得到開放代碼組織的接受和認可。

7、移植性
Microsoft經常修改ASP,下一版本叫ASP+,現在已經開始測試。我相信他們會修改許多我曾經提到過的問題。但也無庸質疑的,Microsoft會將你限制在他們的產品范圍之內的。
我曾經是一個蘋果機的程序員,當windows95問世後,我開始轉變,但許多原來的代碼都無法在windows95下運行,這些代碼現在被放在一邊,我非常的遺憾。所以我不希望在windows下再出現這樣的悲劇。
不要忘記Novell曾經也象Microsoft的網路操作系統一樣熱及一時,但現在已經沒有許多人用了,那麼Microsoft也會這樣的。
我找到了PHP,我仍舊在windows下工作,但我知道PHP代碼可以運行在Solaris、Linux和許多其他的操作系統中,我的心裡感到安慰。

熱點內容
大腦速演算法 發布:2025-10-15 13:58:44 瀏覽:710
固態緩存有什麼用 發布:2025-10-15 13:51:38 瀏覽:773
NS腳本 發布:2025-10-15 13:49:57 瀏覽:381
kmeansc語言 發布:2025-10-15 13:44:04 瀏覽:424
畢業視頻腳本 發布:2025-10-15 13:21:31 瀏覽:221
javamysql插入 發布:2025-10-15 12:40:43 瀏覽:66
db2資料庫鎖表 發布:2025-10-15 12:36:39 瀏覽:127
androidrom編譯 發布:2025-10-15 12:30:40 瀏覽:458
魔獸世界怎麼退出電腦伺服器 發布:2025-10-15 12:21:18 瀏覽:742
我的世界伺服器怎麼裝插件 發布:2025-10-15 12:14:47 瀏覽:257