標籤:style blog http os io 檔案 ar cti
在php運行期間,php引擎要對php源碼進行處理,(詞法分析,文法分析等)然後產生opcode。
然後再運行。在這個階段可以把opcode緩衝起來,當下次需要運行這段程式的時候,就避免了再次 進行詞法分析,文法分析,直接拿opcode來用。
eAccelerator就是這樣的程式。
用vld查看php的opcode:
http://pecl.php.net/package/vld/0.12.0/windows
在上面的地址下載vld,解壓後 將 php_vld.dll,拷貝到ext目錄下。
修改php.ini,增加“extension=php_vld.dll”;
要查看opcode,建立一個php指令碼,cmd下執行
“E:\xampp\php>php -dvld.active=1 e:\htdocs\mytest\n.php”命令。
顯示結果:
E:\xampp\php>php -dvld.active=1 e:\htdocs\mytest\n.phpFinding entry pointsBranch analysis from position: 0Jump found. Position 1 = 13, Position 2 = 6Branch analysis from position: 13Return foundBranch analysis from position: 6Jump found. Position 1 = 3Branch analysis from position: 3Jump found. Position 1 = 1Branch analysis from position: 1filename: E:\htdocs\mytest\n.phpfunction name: (null)number of ops: 14compiled vars: !0 = $iline # * op fetch ext return operands--------------------------------------------------------------------------------- 30 0 > ASSIGN !0, 0 1 > IS_SMALLER ~1 !0, 100 2 > JMPZNZ 6 ~1, ->13 3 > POST_INC ~2 !0 4 FREE ~2 5 > JMP ->1 31 6 > CONCAT ~3 ‘a‘, !0 7 FETCH_W local $4 ~3 8 ASSIGN $4, !0 32 9 CONCAT ~6 ‘a‘, !0 10 FETCH_R local $7 ~6 11 ECHO $7 33 12 > JMP ->3 36 13 > > RETURN 1branch: # 0; line: 30- 30; sop: 0; eop: 0; out1: 1branch: # 1; line: 30- 30; sop: 1; eop: 2; out1: 13; out2: 6branch: # 3; line: 30- 30; sop: 3; eop: 5; out1: 1branch: # 6; line: 31- 33; sop: 6; eop: 12; out1: 3branch: # 13; line: 36- 36; sop: 13; eop: 13path #1: 0, 1, 13,path #2: 0, 1, 6, 3, 1, 13,0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
安裝eAccelerator:
下載:http://www.sitebuddy.com/php/accelerators/eaccelerator-windows-binaries
下載下來的檔案解壓後,將dll檔案,貝到ext下
修改php.ini,開啟
[eAccelerator] zend_extension_ts="C:/php/ext/eaccelerator.dll" //路徑根據實際情況而定 eaccelerator.shm_size="32" //根據系統記憶體來定,預設16M,可以改成64M eaccelerator.cache_dir="C:/php/temp" //前面建立的緩衝檔案夾 eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
配置redis:
下載http://www.redis.cn/download.html
解壓後有兩個dll檔案,全部拷貝到ext目錄下。[我拷貝到ext,還提示找不到。最後拷貝到php.exe目錄下才不再報錯]。
修改php.ini
添加
"extension=php_igbinary.dll
extension=php_vld.dll"
重啟apache,phpinfo();可以查看是否啟動。
測試redis:
$redis = new Redis(); $redis->connect("192.168.0.110","6379"); //php用戶端設定的ip及連接埠 //儲存一個 值 $redis->set("say","Hello World"); echo $redis->get("say"); //應輸出Hello World //儲存多個值 $array = array(‘first_key‘=>‘first_val‘, ‘second_key‘=>‘second_val‘, ‘third_key‘=>‘third_val‘); $array_get = array(‘first_key‘,‘second_key‘,‘third_key‘); $redis->mset($array); var_dump($redis->mget($array_get));