php會調用編譯函數zend_compile_file()來進行編譯。 這個函數的具體實現其實是包括兩個主要過程的:詞法分析(Lex實現),語法分
析(Yacc實現)。當執行完這個函數之后:php腳本的編譯就算結束了。 這個函數的輸入是:php腳本文件,而輸出則是op_array.簡單一
點說:編譯過程就是把腳本給解析成一條條php虛擬機可以處理的指令,而op_array就是這些指令做成的一個array而已(這很類似一些
編譯型語言編譯產生的匯編代碼了,也是一條條的命令)。
之后php虛擬機會調用zend_execute()這個函數來執行。該函數的輸入就是上邊編譯階段產生的op_array,在這里他會解析每條命令并進
行處理。 由于op命令一共有150左右,所以它需要處理這150中命令。這里會產生一個很有意思的問題:它是如何處理這150種命令的
呢?首先每條命令都是有對應的處理器來進行處理的。所以:虛擬機會依據op_array中各條命令的類型來分發給響應的處理器來進行處
理。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com