PHP文件緩存的性能測(cè)試
前言:在開發(fā)MooPHP的過程中,為了尋找更為高效的緩存方式,對(duì)兩種最常用的緩存方式進(jìn)行了測(cè)試。
PHP常用緩存方式:第一種,把需要緩存的數(shù)據(jù)進(jìn)行處理,形成PHP可以直接執(zhí)行的文件。在需要緩存數(shù)據(jù)的時(shí)候,通過include方式引入,并使用。第二種,把需要的數(shù)據(jù)通過serialize函數(shù)序列化后直接保存到文件。在需要使用緩存數(shù)據(jù)的時(shí)候,通過反序列化讀入文件內(nèi)容并復(fù)制給需要的變量,然后使用。
測(cè)試結(jié)果:通過測(cè)試我們發(fā)現(xiàn),第二種也就是serialize緩存數(shù)據(jù)的方式更加高效。(數(shù)據(jù)略去,最后提供了文章地址下載,大家可以自行測(cè)試)
原因分析:include方式讀取緩存的時(shí)候,PHP需要執(zhí)行幾個(gè)過程1.讀取文件2.解析所Include的文件3.執(zhí)行,給變量賦值
而serialize序列化方式讀取緩存的時(shí)候:1.讀取數(shù)據(jù)2.反序列化數(shù)據(jù)內(nèi)容3.給變量賦值
從以上內(nèi)容對(duì)比的話,可能是由于解析PHP文件內(nèi)的數(shù)組需要的時(shí)間超過unserialize反序列化數(shù)組的時(shí)間。如果你有興趣可以查看《PHP filesystem相關(guān)函數(shù)和include require的性能效率研究》:http://www.ccvita.com/163.html
測(cè)試文件代碼:下載地址:MooPHP-CacheTest.zip原創(chuàng)地址:http://www.ccvita.com/311.html有新的研究心得會(huì)在這里更新。CacheTest_IncludeFile.phpCacheTest_SerializeFile.php
總結(jié)分析:第一種,include緩存的方式優(yōu)點(diǎn):增加數(shù)據(jù)的保密性,和安全性,緩存內(nèi)容不會(huì)被外界發(fā)現(xiàn)。缺點(diǎn):速度相對(duì)較慢。用途:保存禁止系統(tǒng)外部得知的數(shù)據(jù),比如web系統(tǒng)的設(shè)置,甚至MySQL信息等的保存第二種,serialize序列化緩存的方式優(yōu)點(diǎn):速度較快。缺點(diǎn):緩存系統(tǒng)文件路徑一點(diǎn)曝光,緩存內(nèi)容會(huì)泄露。用途:緩存最新文章,相關(guān)文章等不擔(dān)心外部得知的數(shù)據(jù)的時(shí)候,可以使用這種方式。
備注:當(dāng)裝了ea、apc等PHP內(nèi)存緩存之后,第一種通過include讀取緩存的方式速度會(huì)高于第二種serialize序列化緩存的方式。所以在MooPHP框架中,我們對(duì)于非敏感信息采用第二種方式緩存;敏感信息采用第一種方式緩存。有關(guān)MooPHP的介紹可以參考《MooPHP框架簡介》這篇文章(地址:http://www.ccvita.com/295.html)
