前言:
在開發MooPHP的過程中,為了尋找更為高效的緩衝方式,對兩種最常用的緩衝方式進行了測試。
PHP常用緩衝方式:
第一種,把需要緩衝的資料進行處理,形成PHP可以直接執行的檔案。在需要快取資料的時候,通過include方式引入,並使用。
第二種,把需要的資料通過serialize函數序列化後直接儲存到檔案。在需要使用快取資料的時候,通過還原序列化讀入檔案內容並複製給需要的變數,然後使用。
測試結果:
通過測試我們發現,第二種也就是serialize快取資料的方式更加高效。(資料略去,最後提供了文章地址下載,大家可以自行測試)
原因分析:
include方式讀取緩衝的時候,PHP需要執行幾個過程
1.讀取檔案
2.解析所Include的檔案
3.執行,給變數賦值
而serialize序列化方式讀取緩衝的時候:
1.讀取資料
2.還原序列化資料內容
3.給變數賦值
從以上內容對比的話,可能是由於解析PHP檔案內的數組需要的時間超過unserialize還原序列化數組的時間。如果你有興趣可以查看《PHP filesystem相關函數和include require的效能效率研究》:html">http://www.ccvita.com/163.html
測試檔案代碼:
下載地址:MooPHP-CacheTest.zip
原創地址:http://www.ccvita.com/311.html有新的研究心得會在這裡更新。
CacheTest_IncludeFile.php
CacheTest_SerializeFile.php
總結分析:
第一種,include緩衝的方式
優點:增加資料的保密性,和安全性,緩衝內容不會被外界發現。
缺點:速度相對較慢。
用途:儲存禁止系統外部得知的資料,比如web系統的設定,甚至MySQL資訊等的儲存
第二種,serialize序列化緩衝的方式
優點:速度較快。
缺點:緩衝系統檔案路徑一點曝光,緩衝內容會泄露。
用途:緩衝最新文章,相關文章等不擔心外部得知的資料的時候,可以使用這種方式。
備忘:
當裝了ea、apc等PHP記憶體緩衝之後,第一種通過include讀取緩衝的方式速度會高於第二種serialize序列化緩衝的方式。所以在MooPHP架構中,我們對於非敏感資訊採用第二種方式緩衝;敏感資訊採用第一種方式緩衝。有關MooPHP的介紹可以參考《MooPHP架構簡介》這篇文章(地址:http://www.ccvita.com/295.html)
http://www.bkjia.com/PHPjc/508213.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508213.htmlTechArticle前言: 在開發MooPHP的過程中,為了尋找更為高效的緩衝方式,對兩種最常用的緩衝方式進行了測試。 PHP常用緩衝方式: 第一種,把需要緩...