• <video id="iUCLB"><dfn id="iUCLB"></dfn></video>

      <abbr id="iUCLB"><del id="iUCLB"></del></abbr>

      tp真实静态

      浏览:157 发布日期:2020/03/30 分类:功能实现 关键字: 静态 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) 
      评论( 相关
      后面还有条评论,点击查看>>