調(diào)整PHP的性能
更新時(shí)間:2013年10月30日 15:03:06 作者:
php真很強(qiáng)。今天就說下在PHP的 腳本級(jí)上來調(diào)整PHP的性能。
如果你想在單臺(tái)服務(wù)器 上提高PHP的性能。我們可以使用“編譯緩存”。
負(fù)載瓶頸 一般主要在以下四個(gè)方面:
1 數(shù)據(jù)庫
2 服務(wù)器CPU
3 硬盤 I/O
4 網(wǎng)絡(luò)帶寬
除了這四個(gè)。還有什么值得我們優(yōu)化的呢。php真很強(qiáng)。今天就說下在PHP的 腳本級(jí)上來調(diào)整PHP的性能。
如果你想在單臺(tái)服務(wù)器 上提高PHP的性能。我們可以使用“編譯緩存”。 編譯cache 不單能提高性能而且會(huì)隨著PHP程序的容量和代碼復(fù)雜性的增加 服務(wù)器的性能也增加。什么是編譯cache呢。等下告訴你。我們先說下PHP編譯腳本文件所要做的兩步吧:
1 php引擎讀腳本文件,解釋腳本然后在ZEND引擎里生成可執(zhí)行的中間代碼
2 ZEND 第二次開始 執(zhí)行中間代碼
我 們要注意。第一步是在每次PHP腳本文件被請求的時(shí)候都要重復(fù)一次的東西。 而且這個(gè)過程,會(huì)因?yàn)槟_本里面又包括 include()require() eval() 而遞歸 重復(fù)執(zhí)行第一步??上攵挠卸啻罅?。特別PHP文件很大的時(shí)候。所以為什么建議寫PHP文件時(shí)候不贊成行數(shù)過多。
說到這里大家就明白了。其實(shí)我們可以在 第一步那里做點(diǎn)文章。如果我們把第一步解釋文件那里把解釋后的代碼緩存到共享內(nèi)存里面。如果有第二個(gè)請求這個(gè)腳本的時(shí)候就可以跳過第一步而直接進(jìn)入第二步。因?yàn)榈谝徊揭呀?jīng)cache在內(nèi)存里面了。
我們看圖比較一下
先看下如果沒使用 編譯cache 的情況
再來個(gè)使用了編譯cache 的情況
行了看看就明白了。是吧。有了 編譯cache 少走了很多彎路。 特別是在你的代碼里有大量的 include 呀 require 呀的時(shí)候特別有效。
現(xiàn)在介紹三個(gè)編譯cache:
1 The ionCube Accelerator 不開源的說。
2 TheZendAccelerator 要錢的羅。我窮呀
3 APC 這個(gè)我最喜歡因?yàn)椴灰X。效果還挺好哦
我們就說APC
安裝 大概是這樣的。通過pear來安裝
#pear install apc
修改下php.ini 加上擴(kuò)展
extension = /path/to/apc.so
OK就這么簡單。但你再次運(yùn)行PHP的時(shí)候。 這個(gè)APC就已經(jīng)有作用了。編譯代碼就cache 在了share 內(nèi)存中了。那個(gè)爽呀。
如果是window 的 找下這個(gè)里面有 這個(gè)擴(kuò)展
APC 安裝完了后我們還需要調(diào)整下APC 的各方面的參數(shù)。 這個(gè)當(dāng)然按照你自己項(xiàng)目環(huán)境來調(diào)整了。
1 數(shù)據(jù)庫
2 服務(wù)器CPU
3 硬盤 I/O
4 網(wǎng)絡(luò)帶寬
除了這四個(gè)。還有什么值得我們優(yōu)化的呢。php真很強(qiáng)。今天就說下在PHP的 腳本級(jí)上來調(diào)整PHP的性能。
如果你想在單臺(tái)服務(wù)器 上提高PHP的性能。我們可以使用“編譯緩存”。 編譯cache 不單能提高性能而且會(huì)隨著PHP程序的容量和代碼復(fù)雜性的增加 服務(wù)器的性能也增加。什么是編譯cache呢。等下告訴你。我們先說下PHP編譯腳本文件所要做的兩步吧:
1 php引擎讀腳本文件,解釋腳本然后在ZEND引擎里生成可執(zhí)行的中間代碼
2 ZEND 第二次開始 執(zhí)行中間代碼
我 們要注意。第一步是在每次PHP腳本文件被請求的時(shí)候都要重復(fù)一次的東西。 而且這個(gè)過程,會(huì)因?yàn)槟_本里面又包括 include()require() eval() 而遞歸 重復(fù)執(zhí)行第一步??上攵挠卸啻罅?。特別PHP文件很大的時(shí)候。所以為什么建議寫PHP文件時(shí)候不贊成行數(shù)過多。
說到這里大家就明白了。其實(shí)我們可以在 第一步那里做點(diǎn)文章。如果我們把第一步解釋文件那里把解釋后的代碼緩存到共享內(nèi)存里面。如果有第二個(gè)請求這個(gè)腳本的時(shí)候就可以跳過第一步而直接進(jìn)入第二步。因?yàn)榈谝徊揭呀?jīng)cache在內(nèi)存里面了。
我們看圖比較一下
先看下如果沒使用 編譯cache 的情況
再來個(gè)使用了編譯cache 的情況
行了看看就明白了。是吧。有了 編譯cache 少走了很多彎路。 特別是在你的代碼里有大量的 include 呀 require 呀的時(shí)候特別有效。
現(xiàn)在介紹三個(gè)編譯cache:
1 The ionCube Accelerator 不開源的說。
2 TheZendAccelerator 要錢的羅。我窮呀
3 APC 這個(gè)我最喜歡因?yàn)椴灰X。效果還挺好哦
我們就說APC
安裝 大概是這樣的。通過pear來安裝
#pear install apc
修改下php.ini 加上擴(kuò)展
extension = /path/to/apc.so
OK就這么簡單。但你再次運(yùn)行PHP的時(shí)候。 這個(gè)APC就已經(jīng)有作用了。編譯代碼就cache 在了share 內(nèi)存中了。那個(gè)爽呀。
如果是window 的 找下這個(gè)里面有 這個(gè)擴(kuò)展
APC 安裝完了后我們還需要調(diào)整下APC 的各方面的參數(shù)。 這個(gè)當(dāng)然按照你自己項(xiàng)目環(huán)境來調(diào)整了。
相關(guān)文章
PHP基于數(shù)組實(shí)現(xiàn)的分頁函數(shù)實(shí)例
這篇文章主要介紹了PHP基于數(shù)組實(shí)現(xiàn)的分頁函數(shù)實(shí)例,是非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-08-08php實(shí)現(xiàn)的數(shù)組轉(zhuǎn)xml案例分析
這篇文章主要介紹了php實(shí)現(xiàn)的數(shù)組轉(zhuǎn)xml,結(jié)合具體案例形式分析了PHP數(shù)組與xml轉(zhuǎn)換的實(shí)現(xiàn)方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-09-09php統(tǒng)計(jì)文件大小,以GB、MB、KB、B輸出
學(xué)習(xí)了fread讀取命令,用到了filesize函數(shù),知道這個(gè)函數(shù)定大有用到的時(shí)候,遂用之編寫統(tǒng)計(jì)文件大小函數(shù)2011-05-05PHP實(shí)現(xiàn)仿Google分頁效果的分頁函數(shù)
這篇文章主要介紹了PHP實(shí)現(xiàn)仿Google分頁效果的分頁函數(shù),實(shí)例分析了php實(shí)現(xiàn)分頁的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07PHP實(shí)現(xiàn)的XML操作類【XML Library】
這篇文章主要介紹了PHP實(shí)現(xiàn)的XML操作類,涉及php針對數(shù)組、xml的轉(zhuǎn)換、序列化、反序列化等相關(guān)操作技巧,需要的朋友可以參考下2016-12-12