真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在PHP中利用opcode進(jìn)行緩存-創(chuàng)新互聯(lián)

怎么在PHP中利用opcode進(jìn)行緩存?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

成都做網(wǎng)站、成都網(wǎng)站建設(shè),成都做網(wǎng)站公司-創(chuàng)新互聯(lián)已向1000+企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。

1.什么是opcode


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

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

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

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

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

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

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

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

5.opcode有生成

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

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

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

接著在zend/zend_compile.c中找到這個(gè)函數(shù)實(shí)現(xiàn)代碼,這個(gè)函數(shù)就是實(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

通過

可以查看緩存的情況,

7.opcode緩存過期

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

apc.stat=off

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

8.腳本的跟蹤與分析,可以使用xdebug來跟蹤,用xdebug可以實(shí)現(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的報(bào)告文件。

看完上述內(nèi)容,你們掌握怎么在PHP中利用opcode進(jìn)行緩存的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


文章標(biāo)題:怎么在PHP中利用opcode進(jìn)行緩存-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/issos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部