PHP代碼執行流程


 


    怎么樣?有點了解了么。說實話,單看這個,我本人是有點懵的,不過,不要怕。咱們來慢慢地看下。

    首先,在網上找的信息說PHP代碼執行的順序是這樣的,第一步是詞法分析,第二步是語法分析,第三步是轉化為opcode,第四部也就是順序執行這些opcode了。

    聰明如各位看到這里,再返回上面看一下這張圖片,肯定就會有不一樣的感覺了。咱們借用一句話來闡述這幾個步驟:當PHP拿到一段代碼后,經過詞法解析、語法解析等階段后,源程序會被翻譯成一個個指令(opcodes),然后ZEND虛擬機順次執行這些指令完成操作。

    我們都知道,PHP本身是用C實現的,因此最終調用的也是C的函數,實際上,我們可以把PHP看做一個C開發的軟件。既然如此,那么PHP的代碼執行的核心也就是翻譯出來的一條一條指令,在這里就是opcode。

    那么,我們就可以把opcode看成是PHP代碼執行的最基本單位。所以PHP代碼執行的本質也就可以理解為,我們的代碼最終被翻譯為一組opcode處理函數,完事之后再順序執行。

    有了這些認知之后,我們就來看下這個opcode究竟是什么鬼。本質上一個opcode由兩個參數(op1,op2)、返回值和處理函數組成。它的官方解釋就是PHP腳本編譯后的中間語言,類似於java中的bytecode或者是.net中的MSL。

    它的作用就是如下:

    1、編譯原理的中間過程會產生一種中間代碼(語言),PHP由Zend引擎(C語言編寫)編譯后的中間代碼為Opcode然后再交由Zend引擎處理,如同C語言編譯后匯編代碼然后再交由匯編。

    2、生成的Opcode作為一種中間語言,可以幫助實現PHP源程序代碼的不開源,如果你不想別人知道你的PHP代碼是怎么寫的,那你可以直接使用APC截取生成Opcode緩存文件,然后使用自己的PHP擴展加密程序對Opcode文件進行加密和解密,在Zend引擎對Opcode進行解析前進行解密然后再執行。


原文:https://blog.csdn.net/luyaran/article/details/80776167


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM