ホームページ >バックエンド開発 >PHPチュートリアル >libTemplate を使用して静的 Web ページを生成する_PHP チュートリアル

libTemplate を使用して静的 Web ページを生成する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:09:14764ブラウズ

作者:iwind

原来在dev-club发表的一篇文章,将怎么用模板处理程序PHPlib 中的template.inc实现静态网页的生成,呵呵,居然被列入精华,并被多个网站转载,想来这是荣幸。其实网上这方面的东西很多了,我上此发布的所谓IAMS( iwind 文章管理系统),里面也有,有心人可以看一下。下面我只是简要在总结一次。

现在一般说生成静态网页的方法有三种,一个是配置服务器,大家可以到http://www.devarticles.com/c/b/PHP/ 去找找看,对于这个很多地方都有的。另外一个是用ob_函数控制输出。方法如下:先用ob_start();打开输出缓冲器,然后是对数据的分析,操作等等,跟着用ob_get_contents();获取缓冲区的内容,然后再写入文件。根据这个步骤,可以写出以下程序:
   ob_start();
//主体部分,数据操作,处理,输出等等。。。
require”global.php”;
mysql_connect(“localhost”,”root”,””);
…..
//获取缓冲区内容
$contents=ob_get_contents();
//如果不想输出任何东西,可以加上这句
ob_end_clean();
//写入目的文件
$fp=@fopen($targetFile,”w+”) or die(“打开文件时出错”);
fwrite($fp,$contents);
?>

这样就把这个动态页面的内容写入了静态页面,$targetFile.像有的网站首页内容很多,要调用n多个查询语句时,不妨定时生成静态网页,既大幅提高了访问速度,也减轻了服务器负担。

你可以看出来,我用ob_只是处理单个页面,对于批量写入或更新多个页面,这个方法就不行了。这就是我要讲的第三种方法,用模板。模板是个好东东,现在大家都或多或少在用它,建议还不会简单模板处理的网友,花点时间去学它,一般的模板处理程序都很简单的。用模板实现静态网页的生成是非常简单的,方法就是获取分析结果,把分析结果写入文件。下面就以PHPlib中的template.inc来谈谈如果用模板生成静态网页。

一, 修改template.inc
加入以下的几个函数:
//将分析结果保存到文件中去
  function savetofile ($dir,$varname){
   $data=$this->finish($this->get_var($varname));
   $fp=fopen($dir,"w+");
   fwrite($fp,$data);
  }
  //清除已赋值数组
   function renew(){
    $this->varkeys=array();
    $this->varvals=array();
    $this->file=array();
    }

第一个函数是结果保存到静态文件中,第二个是把所有的模板分析变量都置为空,以免批量处理时相互影响。

二,实现静态网页生成。
$itpl->set_file(“main”,”mian.tpl”);
//分析模板变量
…..
//分析mainmains
$tpl->parse("mains","main");
//把分析结果mains存入main.html
$tpl->savetofile("main.html","mains");
//置空
$tpl->renew();//至关重要
?>

はは、とてもシンプルですね? main.html は私たちが必要とするコンテンツです。以下は、データベースを結合し、関数でカプセル化する例です。
//$aid はデータベース内の記事 ID、$table はテーブル名、$template はテンプレート アドレス、$tpl は template.inc のインスタンスです
//各補助は静的Webページアドレス、それらはすべてデータテーブルに存在します
//テーブルの構造は補助3 a3.html….
functionstaticInfo($ aid){
グローバル$テーブル、$テンプレート、$ tpl;
/ /データベースをクエリします
$res=mysql_query(“select * from $table where aid='$aid'”);
//データを取得します
$array=mysql_fetch_array ($res);
//静的な Web ページのアドレスを読み取り、タイトル。
$target=$array[“target”];
$title=$array[“title”];
//分析テンプレート
$tpl->set_file(“main”,$template);
// template $title の {title} 変数を置き換えます
$itpl->set_var("title",$title");
//テンプレート全体を分析します
$itpl->set_var("mains","main") ;
//メインをファイルに書き込みます
$tpl->savetofile($target,"mains");
//空白のままにしておきます
$tpl->renew();
}
?>

この方法関数 staticInfo() を使用して、処理したい記事の静的 Web ページを生成できます。テーブル $target には、記事のコンテンツ、著者、ソースなども含めることができます。方法は同じです。静的 Web ページを更新します
記事がデータベースに追加された後は、静的 Web ページのターゲット アドレスがすでに設定されているため、現時点では、対応する静的 Web ページを再生成するだけで済みます。

記事の静的 Web ページを生成するための重要なポイントは、前者を最初に決定することができます。後者は、各記事のアドレスを自由に設定できます。一般的に使用されるのは 1、タイムスタンプ 2、時、分、秒、3 です。これは、これらの繰り返しが発生する可能性が非常に低いためです。静的 Web ページをバッチで作成します。

単一の記事によって生成された静的 Web ページの関数は非常に単純で、すべての記事の支援を取得してから、関数を挿入します。

// テンプレート クラスを参照します。

require"template.inc";

//関数の概要

require"functions.php";

//いくつかの変数の定義
$table="art";
$template="template/info.tpl";
$tpl=new Template(".");
//mysqlに接続、データベースを選択
mysql_connect("localhost","root',"");
mysql_select_db("article");
//クエリステートメントを送信
$res=mysql_query("select aid from $table");
while($r=mysql_fetch_array($res)){
$aid=$r["aid"];
//静的 Web ページを生成
staticInfo($ aid);
}
//End
echo" すべての静的 Web ページの更新/生成が成功しました";
?>

上記は完全な例です。私たちの CMS プロセスは次のようになります:
1. 記者が原稿を公開します (原稿の内容をデータベースに入れます)
2. 編集者がレビューします (公開できると判断した場合は、コンテンツを静的 Web ページに生成できます)
3.原稿を返却する(原稿内容をデータベースに入れる)生成された静的Webページを削除し、データベース内のコンテンツを削除する)

すると、訪問したWebサイトのコンテンツは静的になります。 1 つの質問は、この方法は多くのスペースを必要とするかということです。 http://www.knowsky.com には数千の記事があり、占有スペースはわずか 2,000 万です。一方、10,000 件の記事がある場合、200M のスペースを購入するほどケチることはありませんよね?

静的な記事リストの生成について混乱しているかもしれません。これは、ページ番号を計算する ≈ それぞれを分析することです。 ページ番号の内容→ ファイルに書き込まれます。 各ページ番号の内容を分析するには、もちろん関数を記述する必要があります。これをページごとに生成すると、笑われると思います^_^。

静的Webページは、サーバーの負荷を軽減し、アクセス速度を向上させるだけでなく、簡単にバックアップできるミラーWebサイトとしても使用でき、攻撃による損失を軽減し、復元速度を高速化します。もちろん、静的な Web ページは誰にとっても多くの不便をもたらします。また、動的と静的な間のバランスをとる必要があります。js によって呼び出される PHP コードを静的な Web ページに追加して、カウントや即時更新などを実現することもできます。 (終わり)

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/314562.html技術記事著者: iwind もともと dev-club に掲載された記事は、テンプレート処理プログラム PHPlib で template.inc を使用して静的 Web ページを生成する方法に関するものでした。笑、実際にはエッセンスに含まれており、多くの人が使用していました...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。