require 和 file_get_contents

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(清理本次請求用到的數據)

相關文章
相關標籤/搜索