PHP文件緩存包含三種格式
PHP文件緩存的速度一直是PHP程序員們關(guān)心的問(wèn)題,他們一直在探討著如何才能提高PHP文件緩存的效率來(lái)滿足自己的開(kāi)發(fā)需求。#t#
PHP文件緩存內(nèi)容保存格式主要有三種:
1.變量 var_export 格式化成PHP正常的賦值書(shū)寫(xiě)格式,用的時(shí)候直接include文件
2.變量 serialize 序列化之后保存,用的時(shí)候反序列化
3,變量 json_encode格式化之后保存,用的時(shí)候json_decode
一直以來(lái),我都以為第一種效率最高,因?yàn)槟鞘荘HP腳本解釋器解析PHP腳本的格式,原生的,應(yīng)該最快,至少讀取緩存的效率應(yīng)該是最高的,可是今天做了個(gè)測(cè)試,令我大跌眼鏡!原來(lái) serialize序列化效率才是最高的,不論是讀還是寫(xiě)!
下面是用來(lái)測(cè)試的PHP文件緩存的代碼:
- view plaincopy to clipboardprint?
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - /*
 - $file = var_export($_SERVER,1);
 - $file = "";
 - file_put_contents("data/in.php",$file);
 - */
 - include("data/in.php");
 - }
 - echo "include讀:".(microtime(1)-$st)." ";
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - $file = file_put_contents("data/se.php"
 - ,serialize($_SERVER));
 - //$file = file_get_contents("data/se.php");
 - //$file = unserialize($file);
 - }
 - echo "serialize寫(xiě):".(microtime(1)-$st)." ";
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - //$file = file_put_contents("data/se.
 - php",serialize($_SERVER));
 - $file = file_get_contents("data/se.php");
 - $file = unserialize($file);
 - }
 - echo "serialize讀:".(microtime(1)-$st)." ";
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - $file = file_put_contents("data/js.php
 - ",json_encode($_SERVER));
 - //$file = file_get_contents("data/js.php");
 - //$file = json_decode($file);
 - }
 - echo "json寫(xiě):".(microtime(1)-$st)." ";
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - //$file = file_put_contents("data/js.
 - php",json_encode($_SERVER));
 - $file = file_get_contents("data/js.php");
 - $file = json_decode($file);
 - }
 - echo "json讀:".(microtime(1)-$st)." ";
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - /*
 - $file = var_export($_SERVER,1);
 - $file = "";
 - file_put_contents("data/in.php",$file);
 - */
 - include("data/in.php");
 - }
 - echo "include讀:".(microtime(1)-$st)." ";
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - $file = file_put_contents("data/se.
 - php",serialize($_SERVER));
 - //$file = file_get_contents("data/se.php");
 - //$file = unserialize($file);
 - }
 - echo "serialize寫(xiě):".(microtime(1)-$st)." ";
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - //$file = file_put_contents("data/se.
 - php",serialize($_SERVER));
 - $file = file_get_contents("data/se.php");
 - $file = unserialize($file);
 - }
 - echo "serialize讀:".(microtime(1)-$st)." ";
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - $file = file_put_contents("data/js.
 - php",json_encode($_SERVER));
 - //$file = file_get_contents("data/js.php");
 - //$file = json_decode($file);
 - }
 - echo "json寫(xiě):".(microtime(1)-$st)." ";
 - $st = microtime(1);
 - for ($i=0;$i<1000;$i++){
 - //$file = file_put_contents("data/js.
 - php",json_encode($_SERVER));
 - $file = file_get_contents("data/js.php");
 - $file = json_decode($file);
 - }
 - echo "json讀:".(microtime(1)-$st)." ";
 
結(jié)果太神奇了!include寫(xiě):0.559882879257include讀:0.185745000839serialize寫(xiě):0.255033969879serialize讀:0.0853068828583json寫(xiě):0.284864902496json讀:0.145938873291 序列化是最快,無(wú)論讀或?qū)?,都是第一種的效率的兩倍,json比序列化的PHP文件緩存效率稍低,表現(xiàn)還可以!
如果撇開(kāi)文件讀寫(xiě)所耗費(fèi)的時(shí)間,他們的效率差別可能會(huì)更大!include那個(gè),雖然是PHP腳本賦值的格式,但是也是要分析解析文本,PHP腳本解釋器需要?jiǎng)佑谜麄€(gè)解釋器分析PHP腳本,而序列化不需要,只用啟用序列化文本分析就行了,所以PHP文件緩存效率更高。
 















 
 
 







 
 
 
 