require
require_once
include
include_once
curl
file_get_contents
---各類選擇的比較php
還有這麼複雜的說法,怎麼辦?
api
在開發過程當中發現,用require來加載一個很大(幾百K,甚至幾兆)的配置文件時,會形成響應超時。若是把這個配置文件的內容序列化後,用file_get_contents獲取文件而後反序列化的方法來加載,就會快不少。curl
通過近兩週的研究,大概知道了其中的緣由。函數
首先,還從PHP的流程提及,PHP其實有兩個流程,一個是啓動的流程,一個是響應請求的流程。PHP做爲Apache的一個模塊,向Apache註冊了兩個函數,一個是Aapche啓動的時候運行的函數:sapi_startup;一個是Apache接收到請求的時候調用的函數:php_handlerui
啓動的流程:url
Apache啓動 code
-> sapi_startup開發
-> php_module_startup (PHP啓動總開關)get
-> zend_startup (啓動Zend引擎,包括初始化全局變量,初始化 compile 和 execute 函數編譯器
相應請求的流程:
Apache收到請求
-> sapi_startup
-> zend_activate (包括初始化編譯器、初始化執行器、啓動掃描器)
-> zend_compiler (語法分析、語意分析、生成opcode)
-> zend_execute (執行每一個opcode)
-> zend_deactive(清理本次請求用到的數據)