应用编译机制作为ThinkPHP独创的功能特色,从1.0版本就延续至今,3.2版本的编译机制更加具有特色。

应用编译缓存

编译缓存的基础原理是第一次运行的时候把核心需要加载的文件去掉空白和注释后合并到一个文件中,第二次运行的时候就直接载入编译缓存而无需载入众多的核心文件。当第二次执行的时候就会根据当前的应用模式直接载入编译过的缓存文件,从而省去很多IO开销,加快执行速度。

项目编译机制对运行没有任何影响,预编译机制只会执行一次,因此无论在预编译过程中做了多少复杂的操作,对后面的执行没有任何效率的缺失。

编译缓存文件默认生成在应用目录的Runtime目录下面,我们可以在Application/Runtime目录下面看到有一个common~runtime.php文件,这个就是普通模式的编译缓存文件。如果你当前运行在其他的应用模式下面,那么编译缓存文件就是:应用模式~runtime.php

例如,如果你当前用的是SAE模式,那么生成的编译缓存文件则会变成sae~runtime.php

普通模式的编译缓存的内容包括:系统函数库、系统基础核心类库、核心行为类库、项目函数文件,当然这些是可以改变的。

运行Lite文件

这是3.2.1版本的新特性。 运行Lite文件的作用是替换框架的入口文件或者替换应用入口文件,提高运行效率。因为默认生成的文件名为lite.php,并且是运行时动态生成,因此称之为运行Lite文件

Lite文件的特点包括:

  • 运行时动态生成;
  • 常量定义为针对当前环境;
  • 支持定义需要编译的文件列表;
  • 支持生成Lite文件的名称;

如何生成Lite文件,请参考部署部分的替换入口。

大理石平台哪家好

 

thinkphp 应用编译的更多相关文章

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

    1.定义单入口文件(index.php) 在单入口index.php中不定义这两项时,会生成编译缓存文件~runtime.php define('RUNTIME_PATH','./App/Temp/' ...

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

    原文:thinkphp学习笔记3-项目编译和调试模式 1.项目编译 在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并 ...

  3. mac机上搭建php56/nginx 1.8.x/thinkphp 3.2.x/gearman扩展/seaslog扩展/redis扩展环境

    php的各种扩展配置起来实在不容易,记录一下备忘: 一.php56 安装 虽然php7出来了,但是没用过,不知道有没有坑,这里仍然使用php5.6版本 1.1 安装php/php-pfm brew u ...

  4. thinkphp修改和删除数据

    1.在控制器MainController里面写一个方法,调用Nation表中的数据. public function zhuyemian() { $n = D("Nation"); ...

  5. thinkphp一句话疑难解决笔记 3

    错误调试, E($msg)? 这个是tp内置的E 方法, E 函数. 它是tp抛异常 的另外一种方式. 默认的异常处理方式是, 在 框架下的 ThinkPHP/Tpl/think_exception. ...

  6. thinkphp一句话疑难解决笔记

    URL_PATHINFO_DEPR, depr表示 网页路径"分隔符",用"-", 有利于seo,注意是从 sername/index.php(开始的)/hom ...

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

    ThinkPHP2.2框架执行原理.流程图在线手册 ThinkPHP控制器的执行流程 对用户的第一次URL访问 http://<serverIp>/My/index.php/Index/s ...

  8. thinkphp的学习笔记

    # Thinkphp ## 什么是框架?(框架开发)> 框架就是通过提供一个开发Web程序的基本框架(比如提供了分页类.数据库操作类.文件操作类等),使用框架可以减少开发者代码的编写.> ...

  9. ThinkPHP 3.2.3(一)基础

    一.安装 ThinkPHP无需任何安装,直接拷贝到你的电脑或者服务器的WEB运行目录下面即可. 如:我使用的是XAMPP集成环境,将框架解压缩到htdocs目录下即可.   二.目录结构 1.初始目录 ...

随机推荐

  1. linux磁盘分区、挂载、查看

    实战: 34    查看本机所有磁盘                 fdisk -l 35    查看磁盘挂载情况                lsblk -f 36            39: ...

  2. Oracle之视图联合查询加排序问题

    在公司修改bug,有这样的需求:需要从两张视图中查出相同字段的数据,按照导师姓名先排序,再按照学号排序 union联合两张表,SELECT * from((SELECT DS_ID,PYLX_ID,Y ...

  3. mysql 8+ 忘记root密码 解决方案

    在安装完数据库后,由于自己不小心直接关闭了安装窗口,或者长时间没有使用root用户登录系统,导致忘记了root密码,这时就需要重置MySQL的root密码.当然,最简单方式自然是删除数据库的data目 ...

  4. thinkphp自动创建目录

    自动创建目录 在第一次访问应用入口文件的时候,会显示如图所示的默认的欢迎页面,并自动生成了一个默认的应用模块Home. 接下来再看原来空的Application目录下面,已经自动生成了公共模块Comm ...

  5. hdu多校第八场 1009 (hdu6665) Calabash and Landlord 计算几何/dfs

    题意: 给定两个矩形,输出这两个矩形把平面分成了多少块. 题解: 本来是道计算几何的大讨论,被我生生写成了bfs. 离散化边,注意不重合的边中间要空出来一格,四周也要空出来一圈,然后暴力bfs计算一共 ...

  6. spring boot+vue.js发送post时一直415,swagger却很正常

    首先百度说要加header为applicaiton/json,加完后一直400,说json不符合格式,webstorm说要单引号,spring boot那边要双引号...... 后来不知道看了哪里说把 ...

  7. (转)Python之路,Day6 - 面向对象学习

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.     引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...

  8. 图文形式分享网页到facebook (要求:可以多个图片切换选择)

    分享网页到facebook的功能很常见,之前都是简单的网页分享,没遇到什么砍儿.这次的需求相比之前有一丁点特殊,就是图片得是用户指定选择的. fb文档地址:https://developers.fac ...

  9. Vue.js中的图片引用路径问题

    当我们在Vue.js项目中引用图片时,关于图片路径有以下几种情形: 使用一: 在data里面定义好图片路径: /*错误写法*/ imgUrl:'../assets/logo.png' 在templat ...

  10. 如何提高阿里云cdn命中率?原命中率极低。

    博客搬迁了,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/08/29/%E5%A6%82%E4%BD%95%E6%8F%90%E9%AB%98%E9 ...