php生成html静态页面的二种方法

if ($content = $cache->start($cache_id))
{
 echo $content;
 exit();
}

 //creates new cache files with the given data, $key== name of the
cache, data the info/values to store
 public function put($key, $data){
  $values = serialize($data);
  $filename = $this->fileName($key);
  $file = fopen($filename, ‘w’);
     if ($file){//able to create the file
         fwrite($file, $values);
         fclose($file);
     }
     else return false;
 }

function startCache(){
      $this->startTime = $this->getMicroTime();
      ob_start();
      if ($this->status){
         $this->cacheFile = $this->cacheDir.urlencode(
$_SERVER[‘REQUEST_URI’] );
         if ( (file_exists($this->cacheFile)) &&
              ((fileatime($this->cacheFile) + $this->timeOut) >
time()) )
         {
            //从缓存文件中读取内容
            $handle = fopen($this->cacheFile , “r”);
            $html   = fread($handle,filesize($this->cacheFile));
            fclose($handle);
         
            // 显示内容
            echo $html;

//假设从数据库中调的数据存放在二维数组$arr中
$arr =
array(array(“新闻标题一”,”新闻内容一”),array(“新闻标题二”,”新闻内容二”)); 

  function slowFunction($arr = null)
 {
  echo “一个执行起来很慢的函数 🙁 <br>”;
  echo “当前时间是 ” . date(‘M-d-Y H:i:s A’, time()) . ‘<br>’;
网赌平台哪个信誉好,  foreach ($arr as $fruit)
  {
   echo “太阳此时正在 $fruit <br>”;
  }
 )

$cache = new Cache(60, ‘/any_other_path/’);

class Cache {
   var $status    = true;     //
值为True表示开启缓存;值False表示关闭缓存功能。
   var $cacheDir  = ‘cache/’; //存放缓存文件的默认目录
   var $cacheFile = ”;       //缓存文件的真实文件名
   var $timeOut   = 1000;     // 内容被重复使用的最长时限
   var $startTime = 0;        // 程序执行的开始时间
   var $caching     = true;     //
是否需要对内容进行缓存;值为False表示直接读取缓存文件内容
  
   function getMicroTime() {
           list($usec, $sec) = explode(” “,microtime());
          return ((float)$usec + (float)$sec);
    }

 代码如下

function endCache(){
      if ($this->status){
         if ( $this->caching )
         {
            //首先输出页面内容,然后将输出内容保存在缓存文件中
            $html = ob_get_clean();
            echo $html;
            $handle = fopen($this->cacheFile, ‘w’ );
            fwrite ($handle, $html );
            fclose ($handle);

 $newtemp = fopen($path,”w”);//用写入方式打开一个不存在(新)的页面
 fwrite($newtemp,$content);//将刚刚替换的内容写入新文件中
 fclose($newtemp);
 echo “生成”;
}

            //显示页面执行时间           
            echo ‘<p>Total time:
‘.round(($this->getMicroTime()-$this->startTime),4).'</p>’;
         }
      }      
    }

第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置。
默认情况下,缓存时间是 3600 秒,缓存目录是 cache/

require_once ‘Cache/Function.php’;
 

foreach($arr as $key=>$value){
 $title = $value[0];
 $contents = $value[1];
 //echo $title.”.$contents.”;
 $path = $key.’.html’;
 $open = fopen(“template.htm”,”r”); //打开模板文件
 $handle = fread($open,filesize(“template.htm”)); //读取模板文件内容

*/

二, 利用模板生成

// 再一个简单的php  缓存文件实例代码

$cache = new Cache();

   //导入缓存类
  
require_once(‘cache.class.php教程‘);
   //创建一个缓存类对象CacheManager
   $CacheManager = new Cache();
   //调用startCache方法,表示开始缓存
   $CacheManager->startCache();
   //以下区块所有echo内容都将作为缓存写入缓存文件中
   echo “Start Cache example at: “.date(‘H:i:s’).”<br/>”;
   sleep(2);
   echo “End Cache example at: “.date(‘H:i:s’).”<br/>”;
  
   echo “<br/><a href=’clear.php’>Clean the
cache</a><br/>”;
   //以上区块所有echo内容都将作为缓存写入缓存文件中
   $CacheManager->endCache();

//如果没有缓存数据
if ($values == false) {
 //insert code here…
 //写入键值 $key 的数据
 $cache->put($key, $values);
} else {
 //insert code here…
}
Cache.class.php

            // 显示程序执行时间          
           echo ‘<p>Total time: ‘
                
.round(($this->getMicroTime())-($this->startTime),4).'</p>’;
           
            //退出程序
            exit();
          }
          else
          {
             //置缓存标志caching为true
             $this->caching = true;
          }
      }
    }

 //returns cache for the given key
 public function get($key){
  $filename = $this->fileName($key);
  if (!file_exists($filename) || !is_readable($filename)){//can’t read
the cache
   return false;
  }
  if ( time() < (filemtime($filename) + $this->cache_expire) )
{//cache for the key not expired
   $file = fopen($filename, “r”);// read data file
         if ($file){//able to open the file
             $data = fread($file, filesize($filename));
             fclose($file);
             return unserialize($data);//return the values
         }
         else return false;
  }
  else return false;//was expired you need to create new
  }
}
?>

          closedir($handle);      
       }
    }

步骤:

}

 代码如下

 slowFunction($arr);

 代码如下

 $arr = array(‘东方’, ‘南方’,’西方’);

php批量生成html测试:

//cache.class.php代码

$newtemp =
fopen(“1.htm”,”w”);//生成,用写入方式打开一个不存在(新)的页面
fwrite($newtemp,$content);//将刚刚替换的内容写入新文件中
fclose($newtemp);
echo “生成”;

缓存的工作原理其实并不复杂。它的核心思想是:首先,我们将需要显示的内容存储在一个文本文件(即缓存文件)之中。然后,如果有用户请求某个页面的内容,我们首先检查此页对应的缓存(即那个文本文件)是否存在——如果存在且为最新的缓存文件,那么直接将这个文本文件中的内容输出到客户端供用户查看;如果此页对应的缓存文件不存在或缓存生成的时间不符合要求(太旧),那么直接执行一次此页对应的PHP文件,并将显示内容存储在缓存文件中。重复上述流程。这样一来,虽然增加了PHP代码,但我们最大程度的节省了PHP链接到数据库教程再提取数据的时间。

一, 利用PHP的输出控制函数(Output
Control)得到静态页面字符串,再写入到新的文件中。

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图