用libTemplate實作靜態網頁的生成_PHP教程
作者: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”);
//分析模板变量
…..
//分析mainmains
$tpl->parse("mains","main");
//把分析结果mains存入main.html
$tpl->savetofile("main.html","mains");
//置空
$tpl->renew();//至关重要
?>
呵呵,是不是很簡單,main.html就是我們要的內容。下面是一個結合資料庫的例子,並用函數封裝了起來。
//$aid是資料庫中的文章id,$table是表名稱,$template是模板位址,$tpl是template.inc的一個實例
//每一個aid對應一個靜態網頁位址,都存在一個資料表中
//表格的結構類似aid target title
// 2 a2.html ….
/ / 3 a3.html ….
function staticInfo($aid){
//取出資料
$array=mysql_fetch_array($res);
//讀取靜態網頁位址,標題。
$target=$array[“target”];
$title=$array[“title”];
//分析模板
$tpl->set_file(“main”,$template );
//把模板中的{title}變數換成$title
$itpl->set_var(“title”,$title”);
//分析整個模板
$itpl ->set_var(“mains”,”main”);
//把mains寫入檔案
$tpl->savetofile($target,"mains");
//置空
$tpl->renew();
}
?>
這樣我們就可以用函數staticInfo()把我們想要處理的任一篇文章都產生靜態網頁。裡面也可以包含文章內容,作者,來源等等,方法是一樣的。時候,只要把對應的靜態網頁重新產生一次即可。靜態網頁的關鍵所在就是$template(模板位址),$target(目標位址)。 ,時分秒3,根據文章id。是非常簡單的。
require”functions.php”;
//一些變數的定義
$template=”template/info.tpl”;
$tpl=new Template(“.”); //連接mysql,選擇資料庫
mysql_connect(“localhost”,”root',””);
//發送查詢語句
$res=mysql_query(“select aid from $table”);while($r=mysql_fetch_array($res)){
$aid=$r[“aid”];
//產生靜態網頁
staticInfo($aid);
}
//結束
echo」所有靜態網頁更新/產生成功」;
?>
上面就是完整的例子。我們做cms的流程可以如下:
1,記者發稿(把稿件內容放入資料庫)
2,編輯審查(如果他認為可以發布,那麼就可以把這些內容生成靜態網頁)
3,退回稿件(把產生的靜態網頁刪除,把資料庫中的內容刪除)
然後,我們造訪到的網站內容就都是靜態的了。一個問題就是,這種方法會不會佔用很多空間內? http://www.knowsky.com 有上千篇文章了,只佔了20M空間。反過來說,如果你有10000篇文章的話,你不會吝嗇到只買200M的空間吧?
或許你對生成靜態的文章列表感到困惑,其實方法是一樣的,就是計算頁碼 分析每個頁碼的內容 寫入檔案。 分析每個頁碼的內容,當然是寫個函數咯,如果你一頁一頁的生成,恐怕被人嘲笑 ^_^。
靜態網頁不僅是可以減輕伺服器負擔,提高存取速度,也可以方便地做鏡像網站,方便地備份,減少被攻擊損失程度,加快還原速度。當然靜態網頁也會為大家帶來許多不便的地方,你需要在動態和靜態之間做出平衡,也可以在靜態網頁中加入js調用的php程式碼,來達到計數,即時更新等目的。 (完)

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Edge瀏覽器怎麼將網頁用捷徑傳送到桌面?我們很多用戶為了方便直接打開訪問頁面,想要將經常使用的網頁以快捷方式的形式顯示在桌面,但是不知道應該如何操作,針對這個問題,本期小編就來和廣大用戶們分享解決方法,一起來看看今日軟體教學分享的內容。 Edge瀏覽器將網頁傳送到桌面捷徑方法: 1、開啟軟體,點選頁面中的「...」按鈕。 2、在下拉式選單選項中選擇「應用」中的「將此網站作為應用程式安裝」。 3、最後在彈出的視窗中將其

有網友發現打開瀏覽器網頁,網頁上的圖片遲遲加載不出來,是怎麼回事?檢查過網路是正常的,那是哪裡出現了問題呢?下面小編就來跟大家介紹一下網頁圖片載入不出來的六種解決方法。網頁圖片載入不出來: 1、網速問題網頁顯示不出圖片有可能是因為電腦的網路速度比較慢,電腦中開啟的軟體比較多, 而我們造訪的圖片比較大,這就可能因為載入逾時,導致圖片顯示不出來, 可以將比較佔網速的軟體將關掉,可以去任務管理器查看一下。 2、造訪人數過多 網頁顯示不出圖片還有可能是因為我們造訪的網頁,在同時段造訪的

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

程式語言PHP是一種用於Web開發的強大工具,能夠支援多種不同的程式設計邏輯和演算法。其中,實作斐波那契數列是一個常見且經典的程式設計問題。在這篇文章中,將介紹如何使用PHP程式語言來實作斐波那契數列的方法,並附上具體的程式碼範例。斐波那契數列是一個數學上的序列,其定義如下:數列的第一個和第二個元素為1,從第三個元素開始,每個元素的值等於前兩個元素的和。數列的前幾元

在網頁中執行 PHP 程式碼需要確保 Web 伺服器支援並已正確配置 PHP。可以透過三種方式開啟 PHP: * **伺服器環境:**將 PHP 檔案放置在伺服器根目錄並透過瀏覽器存取。 * **整合開發環境:**將 PHP 檔案放置在指定 Web 根目錄並透過瀏覽器存取。 * **遠端伺服器:**透過伺服器提供的 URL 位址存取託管在遠端伺服器上的 PHP 檔案。

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App

番茄小說,這款備受歡迎的小說閱讀軟體,不僅擁有豐富多樣的小說資源,還提供了專屬的分類,讓每位讀者都能輕鬆找到心儀的讀物。無論是經典名著還是熱門新作,番茄小說都能滿足你的閱讀需求。其中也能夠發表自己的動態,分享自己的閱讀觀點,經驗,實現社交功能,但是很多小伙伴們都不清楚究竟該如何發表自己的動態,那麼想要了解的用戶們們就快來跟著一起詳細了解一下吧。番茄小說怎麼發動態? 1.先點選進入番茄小說的我的頁面。 2、然後點選頭像框進入個人資訊頁面。 3.接著點選發表動態的編輯圖案。 4.最後填寫好內容以後選擇發表按

在現今的軟體開發領域中,Golang(Go語言)作為一種高效、簡潔、並發性強的程式語言,越來越受到開發者的青睞。其豐富的標準庫和高效的並發特性使它成為遊戲開發領域的一個備受關注的選擇。本文將探討如何利用Golang來實現遊戲開發,並透過具體的程式碼範例來展示其強大的可能性。 1.Golang在遊戲開發中的優勢作為靜態類型語言,Golang正在建構大型遊戲系統
