zend引擎是腳本語言引擎(解析器+虛擬機),主要的工做就是解析、翻譯和執行php腳本php
zend引擎要作的兩個工做:api
一、編譯php腳本,輸出opcodes。函數
二、解析執行opcodes,輸出結果。翻譯
在解析執行的過程當中zend引擎能夠調用到全部已經載入到php環境的擴展庫。code
PHP擴展是使用c語言開發的,而c語言最使人望而生畏的就是內存管理,由於有時候可能會忘記釋放某些內存,或者釋放同一塊內存兩次等,這些都是致命的。接口
爲了防止這些狀況出現,zend引擎提供一些與內存管理相關的接口,使用這些接口後就不用管內存有沒有釋放,由於zend引擎會爲你管理全部經過zend api申請的內存,從而避免了內存泄漏。內存
全部的PHP擴展一般包含如下幾部分:開發
一、包含頭文件get
二、聲明導出函數:就是按照php內核規定的準則編寫的函數,有五個參數虛擬機
三、聲明zend函數塊:zend引擎不會自動引入聲明的導出函數的,使用zend_function_entry結構體把編寫的函數引入到zend引擎中
四、聲明zend模塊:php擴展信息都保存在zend_module_entry結構中,這個結構包含全部須要想zend引擎提供的模塊信息。
五、實現get_module()函數:當擴展被動態加載時會調用此函數
六、實現導出函數:導出函數的實現是構建擴展的最後一步,導出函數是能夠在PHP腳本中調用的函數,而實現這些函數才能發揮做用。