搜索
系统检测到您的用户名不符合规范:

tp真实静态

浏览:1012 发布日期:2020年02月16日 分类:功能实现 关键字: 静态 tp5 真实静态 ThinkPHP tp
静态 tp5 真实静态 ThinkPHP tp

框架外静态生成学习
1、开启缓存 ob_startob_start();2、获取内容echo 12355554; 3、写入文件并关闭缓存 file_put_contents("./zz.html",ob_get_clean()); 静态文件触发方式,
1、设置缓存时间,超过时间的重新生成(判断文件是否存在和最后修改时间如:if(is_file(路径)&&-filemtime(路径)))
2、手动后台触发
3、内容自动定时扫描(定时任务)

tp5视图类目录 /thinkphp/library/think/View.php
参考网站:https://my.oschina.net/u/2456768/blog/3115472
1 . 根据模块控制器自动递归创建目录。

2. file_exists判断生成的静态页是否存在

3. 或判断过期与否,存在重定向到静态网页

4. file_put_contents($file,$content)函数生成页面。
下面代码
1. 目录的创建/*
* 递归创建目录
* @param string $dir 文件目录路径
* @return boolean 创建结果
* **/
function mkdirs($dir)
{
if(!is_dir($dir))
{
if(!mkdirs(dirname($dir))){
return false;
}
if(!mkdir($dir,0777)){
return false;
}
}
return true;
}
2. 在基类中初始化需创建的目录protected $staticHtmlDir = ""; //静态模板生成目录
protected $staticHtmlFile = ""; //静态文件


protected function _initialize() {
parent::_initialize();

$this->staticHtmlDir = "html".DS.$this->request->controller().DS;
}
3. 基类中的生成前与生成后的方法。//判断是否存在静态
public function beforeBuild($param) {
//生成静态
//$baseDir = "html".DS.$this->request->controller().DS;
if(is_array($param)) {
$param = implode("_",$param);
}
$this->staticHtmlFile = $this->staticHtmlDir.$this->request->action().($param?$param:'').'.html';
//创建目录mkdirs()
if(mkdirs($this->staticHtmlDir)) {
//<!-- file_exists() 函数检查文件或目录是否存在-->
// <!--filectime() 函数返回指定文件的上次 inode 修改时间。-->
//<!--判断目录是否存在和根据时间判断是否过期-->
if(file_exists($this->staticHtmlFile) && filectime($this->staticHtmlFile)>=time()-60*60*24*5) {
// <!--静态文件存在-->
// <!--redirect方法可以实现页面的重定向功能。-->
$this->redirect('/'.$this->staticHtmlFile);
}
}
}
//开始生成静态文件public function afterBuild($html) {
//<!--判断文件目录是否为空和代码是否为空-->
if(!empty($this->staticHtmlFile) && !empty($html)) {
//<!-- file_exists() 函数检查文件或目录是否存在-->
if(file_exists($this->staticHtmlFile)) {
// <!--unlink() 函数删除文件。-->
unlinnk($this->staticHtmlFile);
}
//<!--file_put_contents创建并写入文件-->
if(file_put_contents($this->staticHtmlFile,$html)) {
// <!--redirect方法可以实现页面的重定向功能。-->
$this->redirect('/'.$this->staticHtmlFile);
}
}
}
4. 视图控制器中的使用。

//对静态模板进行判断
$this->beforeBuild(array($cid,$page));
替换渲染页代码成下面代码
//获取html
$html =$this->fetch();
//生成静态
$this->afterBuild($html)
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
离你多远
积分:1119 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /