ThinkPHP的项目编译
来源:互联网 发布:淘宝引流宝名称怎么写 编辑:程序博客网 时间:2024/06/06 00:55
对于一个刚开始接触ThinkPHP的新手来说,编译缓存的问题迟早会遇到的。在非调试模式下修改了下列文件记得要删除编译缓存文件重新生成。
系统函数库、系统基础核心类库、核心或者扩展定义的核心行为类库、项目配置文件、项目函数文件。
下面是ThinkPHP手册中的原文:
项目编译机制作为ThinkPHP独创的功能特色,从1.0版本就延续至今,编译缓存的基础原理是第一次运行的时候把核心需要加载的文件去掉空白和注释后合并到一个文件中,第
二次运行的时候就直接载入编译缓存而无需载入众多的核心文件,因为存在一个预编译的过程,所以还会进行一些相关的目录检测,对于不存在的目录可以自动生成,这个自动
生成机制后面还会提到。当第二次执行的时候就会直接载入编译过的缓存文件,从而省去很多IO开销,加快执行速度。项目编译机制对运行没有任何影响,预编译操作和目录检
测机制只会执行一次,因此无论在预编译过程中做了多少复杂的操作,对后面的执行没有任何效率的缺失。3.0版本的项目编译更是带来了新的飞跃,包括:
- 首先是合并了2.0体系的核心编译缓存和项目编译缓存,不再生成两个缓存文件;
- 其次是融合了之前ALLINONE模式,直接对本地环境生成设置和常量定义,减少环境判断有效提升性能;
- 更具特色的是新版的编译缓存可以直接替换框架入口甚至网站入口,从某种程度来说,编译后的框架甚至可以脱离框架核心独立运行;
- 还可以通过参数设置,生成的编译缓存载入外部的常量定义文件,便于产品做用户定义;
因为刚才我们并没有开启调试模式,所以第一次运行之后,除了已经自动生成目录结构外,同时也已经生成了编译缓存文件了。
编译缓存文件默认生成在项目的Runtime目录下面,我们可以在App/Runtime目录下面看到有一个~runtime.php文件,这个就是编译缓存文件。
如果你使用了模式扩展的话,编译缓存文件名称可能会有所变化,例如,如果你当前用的是REST模式,那么生成的编译缓存文件则会变成~rest_runtime.php。
注意:环境改变后需要删除编译缓存文件,也就是说你不能把本地生成的编译缓存拷贝到服务器或者其他环境直接使用。
编译缓存的内容通常包括:系统函数库、系统基础核心类库、核心或者扩展定义的核心行为类库、项目配置文件、项目函数文件。如果希望自己设置目录,可以在入口文件里面
更改RUNTIME_PATH常量进行更改,例如:
- define('RUNTIME_PATH','./App/temp/');
除了自定义编译缓存目录之外,还支持自定义编译缓存文件名,例如:
- define('RUNTIME_FILE','./App/temp/runtime_cache.php');
- <?php
- // 替换入口文件为编译缓存文件
- require './App/Runtime/~runtime.php';
接下来,见证奇迹的时刻到来了^_^,我们把项目的入口文件index.php删除,并且把编译缓存文件拷贝到项目目录下面,更名为index.php,再次执行运行正常,说明我们已经
跳过了入口文件,直接以编译缓存文件为项目运行入口了。
- ThinkPHP的项目编译
- ThinkPHP---19--项目编译
- Thinkphp项目的搭建
- learnSystem项目的thinkphp总结
- Thinkphp入门-创建一个最简单的ThinkPhp项目工程
- thinkphp的项目路径的问题
- thinkphp的项目路径的问题
- thinkPHP---1----搭建项目开发的环境
- Thinkphp的分组方式来创建项目
- ThinkPHP项目在SAE下的部署
- ThinkPHP RBAC 的项目name很重要
- ThinkPhp下的项目后台功能思路
- Nginx 下部署ThinkPHP项目的办法
- 基于VUE+THINKPHP的项目实践
- 解决Nginx部署ThinkPHP项目的办法
- Thinkphp 3.0 可定义编译统存的目录
- 编译项目的方法
- thinkPHP建立项目
- WebScarab截获浏览器请求配置
- C++单链表引出的cin问题
- 什么是 Eclipse Compiler for Java (ECJ)
- 导入android项目后 java文件搜不到xml文件里的id 不能识别R文件
- String、StringBuffer、StringBuilder
- ThinkPHP的项目编译
- ios审核 新政策 2014.08.31
- 利用命令行给adobe air程序 传参
- ios应用内跳转到appstore里评分
- Android系统架构——揭开Android系统框架的面纱
- ant给shell脚本传递参数
- 异常捕获不抛出,Spring事务无法回滚 (默认spring只在发生未被捕获的runtimeexcetpion时才回滚。)
- db2 sql error due to 'from'
- void及void指针含义的深刻解析