欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂PHP培訓(xùn)淺談PHP中opcode緩存簡單用法

2018-05-17 15:16:54 1544瀏覽

今天小編主要是想給大家分享一下PHP中opcode緩存簡單用法,本篇文章扣丁學(xué)堂PHP在線學(xué)習(xí)小編結(jié)合實例形式分析opcode的概念、原理、簡單開啟與使用方法,對PHP開發(fā)感興趣的小伙伴們可以了解一下。本文會列出代碼,小伙伴可以好好閱讀。



扣丁學(xué)堂PHP培訓(xùn)淺談PHP中opcode緩存簡單用法



1、什么是opcode

解釋器分析代碼之后,生成可以直接運行的中間代碼,就稱做操作碼,opcode


2、解釋器與編譯器的區(qū)別

解釋器是生成了中間代碼后直接運行中間代碼,運行時的控制權(quán)還是在解釋器手里。

編譯器則是生成了中間代碼之后還進(jìn)一步優(yōu)化代碼,生成可以直接運行的目標(biāo)程序 ,但不執(zhí)行,等待用戶觸發(fā)執(zhí)行,他的控制權(quán)在目標(biāo)程序,和編譯器無關(guān)。


3、php是解釋型語言,他的原理與編譯有點相似,包括詞法分析,語法分析,語義分析.....,php解釋器的核心引擎就是zend engine


4、php如何查看一段代碼的opcode

安裝php的parsekit擴展,通過擴展的api就可以查看php的opcode,如parsekit_compile_string()

php -r "var_dump(parsekit_compile_string('print 1+1;'));"

5、opcode有生成

首先要經(jīng)過詞法分析,腳本代碼可以看做是一系列單詞組合,解釋器要對這些單詞進(jìn)行分類,并打上記號

比如print,我們查看php源碼包中的zend/zend_language_scanner.l在這個文件中我們就可以查找到pirnt對應(yīng)的標(biāo)記。T_PRINT

找到標(biāo)記之后接下來就是語法分析,在zend/zend_language_parser.y中,我們可以找到T_PRINT對應(yīng)的函數(shù)

接著在zend/zend_compile.c中找到這個函數(shù)實現(xiàn)代碼,這個函數(shù)就是實現(xiàn) 了opcode的轉(zhuǎn)換。所有的opcode都是用戶整數(shù)來表示 的。


6、 開啟opcode緩存

生成opcode是需要系統(tǒng)開銷的,每一次執(zhí)行都要生成一次opcode,這樣的開銷還是可觀的,所以php的優(yōu)化必須開啟opcode的緩存,來避免重復(fù)的編譯。

php的opcode緩存有APC,eAccelerator,XCache,這些都是把opcode放在共享內(nèi)存中。

以APC為例:在php.ini中設(shè)置

apc.cache_by_default = on

通過

<?php print_r(apc_cache_info());?>

可以查看緩存的情況,


7、opcode緩存過期

opcode緩存是會過期的,如果過期就要得新生成一次,當(dāng)然也可以跳過過期檢查的機制,在php.ini中設(shè)置

apc.stat=off

這樣程序代碼的修改得通過重啟服務(wù)器來生效。

8.腳本的跟蹤與分析,可以使用xdebug來跟蹤,用xdebug可以實現(xiàn)性能跟蹤器,找到程序的執(zhí)行瓶頸,從而優(yōu)化程序。

xdebug.profiler_output_dir = /tmp/xdebug
xdebug.profiler_output_name = cachegrind.out.%p

xdebug的函數(shù)跟蹤:

xdebug.trace_output_dir = /tmp/xdebug
xdebug.trace_output_name = trace.%c

window下可以用wincachegrind查看xdebug的報告文件。




以上就是小編給大家分享的PHP中opcode緩存簡單用法,希望對小伙伴們有所幫助,想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)查看更多內(nèi)容。扣丁學(xué)堂是專業(yè)的PHP培訓(xùn)機構(gòu),不僅有專業(yè)的老師和與時俱進(jìn)的課程體系,還有大量的PHP在線視頻供學(xué)員觀看學(xué)習(xí)哦。


扣丁學(xué)堂微信公眾號

【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】



查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>




標(biāo)簽: 扣丁學(xué)堂PHP培訓(xùn) PHP中opcode緩存簡單用法 PHP培訓(xùn) PHP基礎(chǔ)教程 PHP入門教程 PHP在線學(xué)習(xí)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部