主頁(yè) > 知識(shí)庫(kù) > PHP中opcode緩存簡(jiǎn)單用法分析

PHP中opcode緩存簡(jiǎn)單用法分析

熱門標(biāo)簽:上海做外呼線路的通信公司 電話機(jī)器人銷售主要負(fù)責(zé)什么 四川保險(xiǎn)智能外呼系統(tǒng)供應(yīng)商 地圖標(biāo)注專員怎么樣 寧波外呼營(yíng)銷系統(tǒng) 長(zhǎng)沙做地圖標(biāo)注公司 房產(chǎn)中介用的是什么外呼系統(tǒng) 福建銀行智能外呼系統(tǒng)價(jià)格 遼寧ai電銷機(jī)器人價(jià)格

本文實(shí)例講述了PHP中opcode緩存簡(jiǎn)單用法。分享給大家供大家參考,具體如下:

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)程序,和編譯器無(wú)關(guān)。

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

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

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

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

5.opcode有生成

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

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

找到標(biāo)記之后接下來(lái)就是語(yǔ)法分析,在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ù)來(lái)表示 的。

6、 開啟opcode緩存

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

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

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

apc.cache_by_default = on

通過(guò)

?php print_r(apc_cache_info());?>

可以查看緩存的情況,

7.opcode緩存過(guò)期

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

apc.stat=off

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

8.腳本的跟蹤與分析,可以使用xdebug來(lái)跟蹤,用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)告文件。

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php緩存技術(shù)總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP基本語(yǔ)法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • 為PHP5.4開啟Zend OPCode緩存
  • PHP OPCode緩存 APC詳細(xì)介紹
  • 利用PHP擴(kuò)展vld查看PHP opcode操作步驟
  • 深入理解PHP之OpCode原理詳解
  • 理解php原理的opcodes(操作碼)
  • PHP內(nèi)核學(xué)習(xí)教程之php opcode內(nèi)核實(shí)現(xiàn)
  • 如何使用PHP Embed SAPI實(shí)現(xiàn)Opcodes查看器
  • PHP7如何開啟Opcode打造強(qiáng)悍性能詳解

標(biāo)簽:澳門 佛山 宜春 常德 延安 深圳 宿遷 工商登記

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP中opcode緩存簡(jiǎn)單用法分析》,本文關(guān)鍵詞  PHP,中,opcode,緩存,簡(jiǎn)單,用法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP中opcode緩存簡(jiǎn)單用法分析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于PHP中opcode緩存簡(jiǎn)單用法分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章