新手感觉tp3.1版项目编译缓存的流程不太对
thinkphp吧
全部回复
仅看楼主
level 1
爱世火狐 楼主
因为在官网上请教没人回复,还是来贴吧打听一下吧,这里貌似热闹点。[笑眼] 正题:
在生成的编译缓存文件的最后,追加了Think::start() 入口。因而在部署模式(且已经生成好了编译缓存)下运行指令走出编译缓存后进入Think::start()方法,可是这个方法中不加任何判断就调用了buildApp()方法,该方法为了再次生成缓存有重新加载了一遍之前缓存中的文件。那编译缓存的初衷:”将所有必需文件及环境配置信息等等集合到一个文件中从而减少io开销“ 不就是白费了吗[惊哭]
按照这个流程,即使生成了编译缓存,大部分文件还是会在Think::start() 方法调用时要重新加载,编译缓存仅仅是跳过了runtime.php 文件减少了runtime.php 文件中处理的的环境判断,常量定义及少部分文件的io开销。
个人觉得在Think::start() 方法中必须
加个判断 if(APP_DEBUG || (!APP_DEBUG && !is_file(RUNTIME_FILE) ) )
作为新手标示很困惑,不知道是我哪里理解错代码了吗,请大神指教啊。[飘过]
2014年02月12日 18点02分 1
level 1
爱世火狐 楼主
补充一下,漏了几句话
个人觉得在Think::start() 方法中必须
加个判断 if(APP_DEBUG || (!APP_DEBUG && !is_file(RUNTIME_FILE) ) )
后再决定调用buildApp()方法
2014年02月12日 18点02分 2
level 1
爱世火狐 楼主
没人解答一下吗[疑问]
2014年02月13日 15点02分 3
level 6
你这研究的是框架原理了,一般开发者是不会去看这块的。运行效率的高低取决于很多因素,如果你很感兴趣,直接去联系作者好了(代码注释里有邮箱),或者上github上发。
2014年02月17日 08点02分 4
谢谢,终于有人回复了,我只是大概看了下框架的运行流程,没有深究,隐约中感到可能缓存有点小逻辑错误,但是不确定,黑黑
2014年02月17日 15点02分
1