认识:ThinkPHP的编译缓存文件~runtime.php

1.定义单入口文件(index.php)

在单入口index.php中不定义这两项时,会生成编译缓存文件~runtime.php

define(‘RUNTIME_PATH‘,‘./App/Temp/‘);    //定义编译目录
define(‘APP_DEBUG‘,TRUE);           //开启调试模式

上述两行不能在index.php中作用,则index.php变为

1 <?php
2      define(‘APP_NAME‘,‘App‘);    //项目名称
3      define(‘APP_PATH‘,‘./App/‘);    //项目路径
4      include ‘./ThinkPHP/ThinkPHP.php‘;    //引入ThinkPHP核心运行文件
5 ?>

2.生成编译缓存文件(~runtime.php)

3.复制~runtime.php中的全部内容到index.php中,运行效果会和之前一样。

~runtime.php中缓存的编译内容,相当于把index.php引导的所有操作全部集成到~runtime.php文件中。

有了这个缓存的编译文件,index.php在下次运行时,不再引导,而是直接检测是否存在~runtime.php编译缓存文件,如果在,则直接运行~runtime.php。

其他详解(来自此处

项目编译机制是指系统第一次运行的时候会自动生成核心缓存文件~runtime.php和项目编译缓存文件~app.php。
这些编译缓存文件把核心和项目必须的文件打包到一个文件中,并且去掉所有空白和注释代码,因为存在一个预编译的过程,所以还会进行一些相关的目录检测,对于不存在的目录可以自动生成,这个自动生成机制后面还会提到。
当第二次执行的时候就会直接载入编译过的缓存文件,从而省去很多IO开销,加快执行速度。项目编译机制对运行没有任何影响,预编译操作和其他的目录检测机制只会执行一次,因此无论在预编译过程中做了多少复杂的操作,对后面的执行没有任何效率的缺失。
~runtime.php包含的文件由系统的core.php文件决定,如果是采用了模式扩展的话,就由模式扩展入口文件决定。默认的核心模式下面包含了下面的一些文件:系统定义文件defines.php、系统函数库functions.php、系统基类Think、异常基类ThinkException、日志类 Log、应用类 App、控制器基类 Action、视图类 View。
其他类库可以在操作方法中使用系统导入机制或者自动加载机制完成加载。
~app.php 通常包含了下面的一些文件:项目配置文件(由惯例配置、项目配置合并而成)、项目公共函数文件common.php。每个项目还可以单独添加自己的项目编译文件列表,只需要在项目配置目录下面定义app.php文件,返回需要额外添加到项目编译缓存的文件列表数组即可。

【入口文件index.php中设置】
编译缓存文件,默认是自动生成在项目目录下面的Runtime目录下面。、
define(‘RUNTIME_PATH‘,‘./MyApp/temp/‘); //如果希望自己设置目录,可以在入口文件里面设置RUNTIME_PATH进行更改
注意在Linux环境下面需要对RUNTIME_PATH目录设置可写权限。

注意在调试模式下面不会生成项目编译缓存,但是依然会生成核心缓存
define(‘NO_CACHE_RUNTIME‘,True); //不希望生成核心缓存文件的话
define(‘STRIP_RUNTIME_SPACE‘,false); //设置对编译缓存的内容是否进行去空白和注释
则生成的编译缓存文件是没有经过去注释和空白的,仅仅是把文件合并到一起,这样的好处是便于调试的错误定位,建议部署模式的时候把上面的设置为True或者删除该定义。

时间: 2024-10-08 12:59:05

认识:ThinkPHP的编译缓存文件~runtime.php的相关文章

Thinkphp入门 一 (45)

原文:Thinkphp入门 一 (45) 什么是框架? 就是一堆代码的集合,这些代码可以有变量.常量.函数.类等等.这些代码彼此紧密联系,彼此有合作关系.里边还有设计模式:MVC.单例.工厂等等. 为什么学习框架? 1. 我们全部精力都可以集中在业务层次,可以节约60%左右的工作量 2. 这个功能体可以帮组我们快速.稳定.高效搭建程序系统 3. 系统的健壮.维护.灵活.适应客户需求方面得到大大加强 成熟框架 1  zendFramework  : 官方框架.重量 2  Yii:OOP   重量

thinkphp2.1

thinkphp框架结构 Common:公共文件,系统定义,系统函数和管理配置. Lang:系统语言文件 Lib:系统基类库目录 Tpl:系统模块类目 Mode:框架模式扩展目录 Vendor:第三方类库目录 应用目录: Common:项目公共文件目录 Conf:配置目录 Lang:语言包 Lib:项目类库目录,通常包括(Action和Model子目录) Tpl:项目模板目录 Runtime:项目运行目录,包含Cache(模板缓存),Temp(数据缓存),Data(数据目录) 命名规范: 类文件

thinkphp学习笔记3—项目编译和调试模式

原文:thinkphp学习笔记3-项目编译和调试模式 1.项目编译 在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并缓存,第二次运行时直接载入编译缓存,这样省去一些IO开销,加快执行速度.并且在3.0以上的版本中海做了一些优化: 1.合并和兴编译缓存和项目编译缓存,不再生成两个缓存文件 2.直接对本地环境生成设置和常量定义减少环境判断 3.编译缓存可以直接替换框架入口甚至项目入口,甚至脱离框架独立运行 4.通过参

thinkphp架构

模块: Common是一个特殊的公共模块,访问所有子模块之前都会首先加载Common模块配置文件( Conf/config.php )和公共函数文件( Common/function.php ). 但Common模块本身不能通过URL直接访问. 配置禁止访问的模块的方法: 'MODULE_DENY_LIST' => array('Common','Runtime','Api') 配置允许访问的模块: 'MODULE_ALLOW_LIST' => array('Home','Admin','Us

ThinkPHP核心框架实现

之前和朋友一块学过够语言,作为系统级别的语言,没有一定的功力和系统编程 经验,很难快速的搭建起来可堪来用的代码块 刚好在公司在用ThinkPHp,这个框架还算是友好,比较灵活.加上PHP的很多函数感觉没怎么用过,正好看看如何利用一些函数搭建起来一套系统.虽然跟着老师创业的时候写了一段时间原生PHP 直接进入代码: 再次学习TP 用户URL请求 调用应用入口文件 载入框架入口文件*******THINKPHP.php 记录初始化运行时间和内存开销 系统常量判断和定义 载入框架引导类*******T

Thinkphp 源码分析

ThinkPHP是国内非常火的一个轻量级框架,采用MVC模式,结构写的非常好,今天 大象 带大家走一下ThinkPHP框架系统运行流程,我将跟随ThinkPHP的执行进行代码讲解,第一课,先讲解URL路由解析 一.ThinkPHP框架目录 /test/index.php //项目入口文件 /ThinkPHP/ThinkPHP.php //框架入口文件 Common 框架公共文件目录(函数库) ThinkPHP/Common/runtime.php //框架初次运行文件 ThinkPHP/Comm

ThinkPHP2.2框架执行流程图,ThinkPHP控制器的执行流程

ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/show/ 所执行的流程进行详细的分析,用户的URL访问首先是定位到了My项目的index.php 入口文件(注意:如果使用了URL_REWRITE,可能index.php已经被隐藏了),项目的入口文件所做的其实是实例化一个App应用实例,并且执行这个应用. 1.加载公共入口文件 在实例化App类之前,我们需要

thinkphp的缓存与taglib-html标签库

TP中的标签库+-------------------------------------------------------------------------+要使用标签库扩展,需要在项目配置文件中定义taglibs.php文件,格式如下:return array(    'mytag'=>'@.Taglib.TaglibMyTag',)+-------------------------------------------------------------------------+然后在

thinkphp自动创建目录

自动创建目录 在第一次访问应用入口文件的时候,会显示如图所示的默认的欢迎页面,并自动生成了一个默认的应用模块Home. 接下来再看原来空的Application目录下面,已经自动生成了公共模块Common.默认的Home模块和Runtime运行时目录的目录结构: Application ├─Common 应用公共模块 │ ├─Common 应用公共函数目录 │ └─Conf 应用公共配置文件目录 ├─Home 默认生成的Home模块 │ ├─Conf 模块配置文件目录 │ ├─Common 模块