ホームページ  >  記事  >  php教程  >  libTemplate を使用して静的 Web ページを生成する

libTemplate を使用して静的 Web ページを生成する

WBOY
WBOYオリジナル
2016-06-21 09:14:39922ブラウズ

静的|ウェブページ

著者: iwind

元々 dev-club に掲載された記事は、テンプレート処理プログラム PHPlib の template.inc を使用して静的 Web ページを生成する方法に関するものでした。笑、実際にエッセンスとして組み込まれ、多くの Web サイトに転載されました。考えてみてください、それは光栄なことです。実際、これについてはインターネット上にたくさんあります。ここに掲載したいわゆる IAMS (iwind 記事管理システム) もありますので、興味のある方はご覧ください。以下に簡単にまとめておきます。

現在、静的 Web ページを生成するには 3 つの方法があると言われています。1 つは、http://www.devarticles.com/c/b/PHP/ にアクセスして確認できます。これには多くの場所があります。もう 1 つは、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+”) または die(“ファイルを開くエラー”);
fwrite($fp ,$ content);
?>

このようにして、この動的ページのコンテンツは静的ページ $targetFile に書き込まれます。たとえば、一部の Web サイトのホームページには大量のコンテンツがあり、n 個の複数のクエリ ステートメントが必要になります。つまり、静的な Web ページを定期的に生成すると、アクセス速度が大幅に向上し、サーバーの負荷が軽減されます。

ご覧のとおり、複数のページの一括書き込みまたは更新の場合、ob_ を使用するだけでは機能しません。これは、テンプレートを使用した 3 番目の方法について説明します。テンプレートは良いものであり、今では誰もが多かれ少なかれテンプレートを使用しています。単純なテンプレート処理に慣れていないネットユーザーは、一般に、テンプレート処理プログラムを学ぶのに時間をかけることをお勧めします。テンプレートを利用して静的Webページを生成する方法は、解析結果を取得してファイルに書き込むだけで非常に簡単です。 PHPlib の template.inc を使用して、テンプレートを使用して静的 Web ページを生成する方法について説明しましょう。

まず、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();
}

最初の機能は、結果を静的ファイルに保存することです。 2 つ目は、バッチ処理中の相互影響を避けるために、すべてのテンプレート分析変数を空に設定することです。

2 番目に、静的な Web ページの生成を実現します。
$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 のインスタンスです
//各補助は静的ウェブページのアドレス、それらはすべてデータテーブルに存在します
//テーブルの構造は援助対象のタイトルと似ています
// 1 a1.html ….
// 2 a2.html ….
// 3 a3.html ….
function staticInfo($aid ){
global $table,$template,$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);
//Setテンプレート $title の {title} 変数を置き換えます
$itpl->set_var("title",$title");
//テンプレート全体を分析します
$itpl->set_var("mains","main" );
//メインをファイルに書き込みます
$tpl->savetofile($target,"mains");
//空白のままにしておきます
$tpl->renew();
}
?>

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

記事から静的Webページを生成する鍵は$template(テンプレートアドレス)と$target(ターゲットアドレス)であることがわかります。前者については先に確認することができ、後者については記事ごとに任意にアドレスを設定することができます。一般的に使用されるものは、記事 ID に基づく 1、タイムスタンプ 2、時、分、秒 3 です。なぜなら、このようなことが繰り返される可能性は非常に低いからです。

4.静的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.csdn.com.cn には数千ページの記事があり、占有するスペースはわずか 2000 万個ですが、200M のスペースしか購入しないでしょう?

かもしれません。静的な記事リストの生成について混乱している人もいますが、実際の方法は同じで、ページ番号を計算する → 各ページ番号の内容を分析する → ファイルに書き込む必要があります。ページごとに関数を作成すると、笑われると思います^_^
静的なWebページは、サーバーの負荷を軽減し、アクセス速度を向上させるだけでなく、 Web サイトをミラーリングし、バックアップを容易にし、攻撃による被害を軽減し、復元速度を高速化します。 もちろん、静的な Web ページは誰にとっても多大な不便をもたらすため、動的と静的な間のバランスを取る必要があります。 js によって呼び出される php コードを静的 Web ページに追加して、カウントや即時更新などを実現できます。 (終了)




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。