(word完整版)PHPCMS整站源码分析.doc

上传人:re****.1 文档编号:546609339 上传时间:2022-09-07 格式:DOC 页数:21 大小:68.04KB
返回 下载 相关 举报
(word完整版)PHPCMS整站源码分析.doc_第1页
第1页 / 共21页
(word完整版)PHPCMS整站源码分析.doc_第2页
第2页 / 共21页
(word完整版)PHPCMS整站源码分析.doc_第3页
第3页 / 共21页
(word完整版)PHPCMS整站源码分析.doc_第4页
第4页 / 共21页
(word完整版)PHPCMS整站源码分析.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《(word完整版)PHPCMS整站源码分析.doc》由会员分享,可在线阅读,更多相关《(word完整版)PHPCMS整站源码分析.doc(21页珍藏版)》请在金锄头文库上搜索。

1、(word完整版)PHPCMS整站源码分析/代码分析版权所有:逆雪寒*/require ./include/common。inc.php;/*看 common.inc。php 核心启动文件我们已经讲解完了。应该都明白了吧*/if($PHPCMSishtml = 1 & file_exists(PHPCMS_ROOT。/。PHPCMSindex。.$PHPCMSfileext)header(location:。PHPCMSindex。.PHPCMSfileext);exit;/*phpcms 允许在后台生静态和使用静态,这里就是先判断 $PHPCMSishtml(从文本缓存弄过来的.应该知道了吧

2、)是否为1 就是开启了。和这个 静态的html文件是否存在。/channels = array();channelsarticle = channelsdown = $channelspicture = channelsinfo= array();foreach($CHANNEL as $v)$module = $vmodule;if(vislink = 0 & $MODULE$moduleiscopy = 1) $channelsmodule$vchannelid = v;/获取频道模块的信息。都是从缓存中取的$headtitle = $PHPCMSseo_title;$headkeywor

3、ds = $PHPCMSseo_keywords;headdescription = PHPCMSseo_description;/ 这个是网页的SEO (title,keywords,description)信息。这个写好了。网络蜘蛛会找你哦。include template(phpcms, index);/ template() 函数是模板函数.这个就是这章的主题。往下会讲模板引擎的制作,大家都看到include 了吧。它的参数是文件地址。那么就可以想到 template()函数其实就是/ 模板编译后的PHP文件地址。phpcache();/*这个函数厉害了。用来自动生缓存页的(这个是页面

4、缓存和数据库信息的文本缓存不是一会事),页面缓存,就是把你所看的页自动生成 XX.html 静态页。请注意前面代码。是不是有个 header()跳转到静态页呀。那静态页那里来的?就是给这个函数弄出来的.自动静态化了其实。是不是很简单呢。上菜先:function phpcache($is_js = 0)global CONFIG,$cachefiledir,$cachefile;if(!is_js & $CONFIGphpcache != 2) return FALSE;contents = ob_get_clean();if(is_js) contents = strip_js(content

5、s);if(CONFIGphpcache = 2 & $cachefiledir & cachefile)dir_create(cachefiledir);file_put_contents(cachefile, $contents);chmod(cachefile, 0777);header(Expires: Mon, 26 Jul 2000 05:00:00 GMT); 告诉浏览器此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可header(LastModified: .gmdate(D, d M Y H:i:s)。 GMT); 告诉服务器本页最后修改日期.目的就是强迫浏览

6、器获取最新资料header(Cache-Control: nocache, mustrevalidate); 这句 session_cache_limiter(private) 作用差不多.就是用户 点击后退不会出现警告页。十分有用哦。大家别忘了header(Pragma: nocache); 不缓存当前页 。其实和前一句一样意思,这句不过是为了兼容http1。0协议。echo contents; /输出内容.首先判断.文件当前文件不是JS问文件和后台打开了页面缓存静态化,。然后使用了OB读写缓冲区系列函数来操作缓冲区。ob_get_clean() 函数。十分有用.一般我们做整站静态化也是利用

7、OB系列函数来实现。这个函数就是获取当前缓冲区的HTML内容.然后把将要输出的缓冲区内容清除掉。网页先是一点点读到浏览器的缓冲区。当缓冲区满了以后才会放出来。所以我们可以用OB系列函数在缓冲区没有输出之前截取内容来做我们要做的过滤等动作。(dz的伪静态有部分就这样实现的。把缓冲区中的所有超级连接地址更改成: thread-46695-1-3。html 形式.然后apache 那边再用.hataccess 来做判断跳转) 这里也是.我们获取将要输出的内容以后 调用 strip_js() 这个函数来过滤HTML内容。 因为比较简单继续上菜:function strip_js(string, js

8、= 1)$string = str_replace(array(n”,”r”,),array(,url=),$string/url);return js=1 ? ”document。write(”。string.”);n” : $string;主要是来过滤内容里面的 n 换行 、r 换页符 和 具体请百度:制表符继续我们上个函数strip_js过滤完内容后。 在使用 file_put_contents() 函数 把内容写到文件里面去。也就是那个 HTML静态页,恩完成了。当前页的静态页已经存在了.但好象不对是吧.因为你刚用了 ob_get_clean() 函数。截取内容后清空了输出的内容.那就

9、是浏览器成了空白页了。所以我们要手动的来 echo 输出内容给客户看。echo 前呢还有些东西要做就是 header 几个http协议头过去 注释已经给出。详细的百度:http协议,会有详细的参数说明 。其主要目的是:强制用户每次访问这个页面时获取最新资料,而不是使用存在客户端的缓存./?关于phpcms cache原理,探讨phpcms二次开发 QQ:267014881 长沙php 交流软件版本 :phpcms2008 Linux王国 www。kinglinux。com 转载请注明原处a。页面缓存,在后台 网站配置-性能优化中,配置了启用PHP页面缓存if(CACHE_PAGE !defin

10、ed(IN_ADMIN)) cache_page_start(); /看是否调用页面缓存global.func。php 有如下函数function cache_page_start()define(CACHE_PAGE_ID, md5(RELATE_URL); /定义cache文件的id,其中RELATE_URL在,common。inc。php 中/define(RELATE_URL, isset($_SERVERREQUEST_URI) ? _SERVERREQUEST_URI : SCRIPT_NAME.(QUERY_STRING ? ?。QUERY_STRING : PATH_INFO)

11、;/把本身的url+它get后的参数,两者md5加密,用来查找和生成cache-iddefine(CACHE_PAGE_DIR, CACHE_PAGE_PATH.substr(CACHE_PAGE_ID, 0, 2)。/);/页面缓存配置(config.inc。php)/define(CACHE_PAGE, 0); /是否开启PHP页面自动缓存功能/define(CACHE_PAGE_PATH, PHPCMS_ROOT.data/cache_page/); /缓存存储路径/define(CACHE_PAGE_TTL, 3600); /秒,缓存默认生命周期/define(CACHE_PAGE_I

12、NDEX_TTL, 300); /秒,缓存默认生命周期/define(CACHE_PAGE_CATEGORY_TTL, 600); /秒,缓存默认生命周期/define(CACHE_PAGE_LIST_TTL, 900); /秒,缓存默认生命周期/define(CACHE_PAGE_CONTENT_TTL, 14400); /秒,缓存默认生命周期/PHPCMS_ROOT。data/cache_page/+cacheid的前三位define(CACHE_PAGE_FILE, CACHE_PAGE_DIR.CACHE_PAGE_ID。.html); /加载cache文件contents = fil

13、e_get_contents(CACHE_PAGE_FILE);if(contents intval(substr($contents, 15, 25) TIME) /判断是否过期,如果没有,就输出文件29个字符以后的所有文件 echo substr(contents, 29); exit;return true;/生成cahe文件function cache_page($ttl = CACHE_PAGE_TTL, isjs = 0)if($ttl = 0 | !defined(CACHE_PAGE_FILE)) return false;contents = ob_get_contents(

14、);if(isjs) contents = format_js(contents); /读入数据,格式化jsdir_create(CACHE_PAGE_DIR);contents = ”!-expiretime:”。(TIME + $ttl)。-n”.contents; /加上时间和超时时间,以到后面取的时候好对比file_put_contents(CACHE_PAGE_FILE, $contents); /写入文件chmod(CACHE_PAGE_FILE, 0777);/清除所有的cache文件,也是data/cache_page下的文件function cache_page_clear()set_time_limit(600);dirs = glob(CACHE_PAGE_PATH。*);foreach($dirs as $dir) $files = glob($dir。/); foreach(files as $file) unlink(file); rmdir(dir);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号