require 和 file_get_contents

Posted qq59538308

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了require 和 file_get_contents相关的知识,希望对你有一定的参考价值。

require
require_once
include
include_once
curl
file_get_contents
---各种选择的比较


还有这么复杂的说法,怎么办?

 

在开发过程中发现,用require来加载一个很大(几百K,甚至几兆)的配置文件时,会造成响应超时。如果把这个配置文件的内容序列化后,用file_get_contents获取文件然后反序列化的方法来加载,就会快很多。

经过近两周的研究,大概知道了其中的原因。

首先,还从php的流程说起,PHP其实有两个流程,一个是启动的流程,一个是响应请求的流程。PHP作为Apache的一个模块,向Apache注册了两个函数,一个是Aapche启动的时候运行的函数:sapi_startup;一个是Apache接收到请求的时候调用的函数:php_handler

启动的流程:

Apache启动 

    ->  sapi_startup

         -> php_module_startup (PHP启动总开关)

             -> zend_startup (启动Zend引擎,包括初始化全局变量,初始化 compile 和 execute 函数

 

相应请求的流程:

Apache收到请求

 

    ->  sapi_startup

         -> zend_activate (包括初始化编译器、初始化执行器、启动扫描器)

             -> zend_compiler (语法分析、语意分析、生成opcode)

                 -> zend_execute (执行每个opcode)

                     -> zend_deactive(清理本次请求用到的数据)

以上是关于require 和 file_get_contents的主要内容,如果未能解决你的问题,请参考以下文章

从 IP 地址获取城市

symfony安装总结

Google 发布/订阅订阅数据与应用不匹配

php抓取页面的几种方式

PHP中include和require的区别详解

Rails 中的 require、require_dependency 和常量重载有啥关系?