+ -
当前位置:首页 → 问答吧 → ★ 带编译功能的 PHPLIB Template 类,性能和速度都有提高 ★

★ 带编译功能的 PHPLIB Template 类,性能和速度都有提高 ★

时间:2006-12-18

来源:互联网

[新增功能说明]

  1.我将类中所有的所有英语注解都删除了,只留下了我所增加功能的中文注解,主要是方便阅读!

  2.这次升级中只对类已有的成员函数进行了修改,接口没有变;添加了新的成员函数以使编译功能更
    灵活,所以需要用到新功能的项目中只要升级该类,[★项目源程序不用做任何修改★]

  3.升级后对类成员调用时,可以用 "__ROOT__" 表示网站的根目录即 $_SERVER["DOCUMENT_ROOT"] ,
    如下例子所示!

  4.本次升级的原理是向 SMARTY 学习的,采用的是数据缓冲功能,以空间换速度!和未升级版本相比,
    在性能上和速度上有很大的提升!这些我在我的项目中有很大的体会!

               
                             [编译功能使用说明]
        
  1.升级了类,想使用升级后的编译功能;项目中源程序不做任何修改的方法如下:
    (1).将 "var $compile_switch = false;" 中 "false" 改为 "true" 以打开编译功能.

    (2).在 "var $rapport_file   = array();" 中加入编译时除了检查当前请求的PHP文件和模板
            文件外还会关联到那些包含文件,这些文件主要是当前HTTP请求的PHP程序 include() 中可能
                会修改的文件.[★如果没有可不用修改它★]格式如下:
        var $rapport_file   = array('__ROOT__/inc/function.php',
                                            '__ROOT__/header.php');

        (3).在你站点的根目录即 $_SERVER["DOCUMENT_ROOT"] 所对应的目录下新建目录 "compile_c"
            并且有写入的权限(Unix类系统).也可以设置为其它目录,格式如下:
        将 "var $compile_dir = '';" 改为  "var $compile_dir =  '__ROOT__/tmp';"   

        (3).将 "var $last_time = 24;" 中 "24" 改为你所规定编译后文件的超时时间,以小时计算,可以是小数


                          [编译功能算法说明]

  1.判断当前HTTP请求的PHP程序是否发送了 POST 数据(本页表单提交),如果有就重新编译.
  2.判断编译后生成的文件是否存在,如果不存在就重新编译.
  3.判断设置另外需要检查是否更新了的文件是否更新了(主要是包含文件),如果更新了就重新编译.
  4.判断当前HTTP请求的PHP程序文件是否做了修改,如果做了修改就重新编译.
  5.判断当前程序所用到的模板文件是否做了修改,如果做了修改就重新编译.
  6.判断编译后文件的时间是否超过了指定的时间,如果超过了就重新编译.

  7.自动支持 "__ROOT__" 表示网站的根目录是在 replace_root() 函数中.
  8.编译功能的逻辑判断是在 set_file() 成员函数中,所以对于编译选项的设置调用必需在该函数之前.
  9.编译生成缓冲文件是在 pparse() 与 p()成员函数中.

                          [该编译功能不足之处]
  1.不能像 SMARTY 一样做到真正有编译,这只是一种缓冲机制而以.
  2.不能到完全自动编译,必需要根据 set_rapport() 函数来实现,缺点是有时可能没有将有改变的文件
    列入进来,不过这种情况肯定是你的项目的包含文件太多了,个人推荐在程序结构上加以整理!

  结束语: 本人使用PHPLIB Template有近一年多了,暂时所有项目都用它,这个类也是用得很广的,通过这
          次升级,性能与速度上有质的提高;个人觉得这个类在速度方面比 SMARTY 更快.暂进还没有发现
                  什么BUG;欢迎你在项目中使用了该类,如果发现了什么BUG请一定告诉我,也希望大家一同来改进
                  讨论,有改进也一定要告诉我啊!一起来支持开源吧!! ^_^ 使用时请保留作者信息!


具体请看在附件中的类原代码,有以上所有的说明:

作者: bzby555   发布时间: 2006-12-18

作者: leehui1983   发布时间: 2006-12-18

:L

作者: dzjzmj   发布时间: 2006-12-18

楼主辛苦!

作者: Nickboy   发布时间: 2006-12-18

赞下楼主,强顶了再细看:)

作者: seraph   发布时间: 2006-12-18

只有我一个下了哈?

作者: muqiao   发布时间: 2006-12-18

一般用SMARTY,不用这个

作者: leehui1983   发布时间: 2006-12-18

作者: kenus   发布时间: 2006-12-18

好好学习, 天天向上
我顶

作者: luckysammo   发布时间: 2006-12-19

多谢大家的支持,第一次发贴大家就这么关心,我太心动了..... :')

作者: bzby555   发布时间: 2006-12-19

今天才看到这个帖子..袁维..我觉得你修改的这个类有问题..有时间细聊一下..不然除非是你还有修改的地方没有注释...注释的地方我差不多都看了..我认为缓冲加进去是一个假象..

作者: mikale   发布时间: 2006-12-20

多谢小路同志的见意,我修改的地方都加了注释的,在我看来我觉得该处理的地方我都处理了(主要是与编译缓冲的操作相关),并且我在我的两个项目中: www.boobye.com www.edu765.com 中应用了,暂时还没有发错任何错误!我能明显的感觉到在速度上提高!

  所以不知小路你所说的问题主要是指那个方面?? 当然,我自己也不知道什么地方还可以改进, 还请赐教!!! 关注中...........

作者: bzby555   发布时间: 2006-12-21

帮顶

作者: leehui1983   发布时间: 2006-12-21