亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Home php教程 php手冊 用libTemplate實(shí)現(xiàn)靜態(tài)網(wǎng)頁的生成

用libTemplate實(shí)現(xiàn)靜態(tài)網(wǎng)頁的生成

Jun 21, 2016 am 09:14 AM
array mysql quot template

靜態(tài)|網(wǎng)頁

作者:iwind

原來在dev-club發(fā)表的一篇文章,將怎么用模板處理程序PHPlib 中的template.inc實(shí)現(xiàn)靜態(tài)網(wǎng)頁的生成,呵呵,居然被列入精華,并被多個(gè)網(wǎng)站轉(zhuǎn)載,想來這是榮幸。其實(shí)網(wǎng)上這方面的東西很多了,我上此發(fā)布的所謂IAMS( iwind 文章管理系統(tǒng)),里面也有,有心人可以看一下。下面我只是簡要在總結(jié)一次。

現(xiàn)在一般說生成靜態(tài)網(wǎng)頁的方法有三種,一個(gè)是配置服務(wù)器,大家可以到http://www.devarticles.com/c/b/PHP/ 去找找看,對于這個(gè)很多地方都有的。另外一個(gè)是用ob_函數(shù)控制輸出。方法如下:先用ob_start();打開輸出緩沖器,然后是對數(shù)據(jù)的分析,操作等等,跟著用ob_get_contents();獲取緩沖區(qū)的內(nèi)容,然后再寫入文件。根據(jù)這個(gè)步驟,可以寫出以下程序:
ob_start();
//主體部分,數(shù)據(jù)操作,處理,輸出等等。。。
require”global.php”;
mysql_connect(“l(fā)ocalhost”,”root”,””);
…..
//獲取緩沖區(qū)內(nèi)容
$contents=ob_get_contents();
//如果不想輸出任何東西,可以加上這句
ob_end_clean();
//寫入目的文件
$fp=@fopen($targetFile,”w+”) or die(“打開文件時(shí)出錯(cuò)”);
fwrite($fp,$contents);
?>

這樣就把這個(gè)動(dòng)態(tài)頁面的內(nèi)容寫入了靜態(tài)頁面,$targetFile.像有的網(wǎng)站首頁內(nèi)容很多,要調(diào)用n多個(gè)查詢語句時(shí),不妨定時(shí)生成靜態(tài)網(wǎng)頁,既大幅提高了訪問速度,也減輕了服務(wù)器負(fù)擔(dān)。

你可以看出來,我用ob_只是處理單個(gè)頁面,對于批量寫入或更新多個(gè)頁面,這個(gè)方法就不行了。這就是我要講的第三種方法,用模板。模板是個(gè)好東東,現(xiàn)在大家都或多或少在用它,建議還不會(huì)簡單模板處理的網(wǎng)友,花點(diǎn)時(shí)間去學(xué)它,一般的模板處理程序都很簡單的。用模板實(shí)現(xiàn)靜態(tài)網(wǎng)頁的生成是非常簡單的,方法就是獲取分析結(jié)果,把分析結(jié)果寫入文件。下面就以PHPlib中的template.inc來談?wù)勅绻媚0迳伸o態(tài)網(wǎng)頁。

一, 修改template.inc
加入以下的幾個(gè)函數(shù):
//將分析結(jié)果保存到文件中去
function savetofile ($dir,$varname){
$data=$this->finish($this->get_var($varname));
$fp=fopen($dir,"w+");
fwrite($fp,$data);
}
//清除已賦值數(shù)組
function renew(){
$this->varkeys=array();
$this->varvals=array();
$this->file=array();
}

第一個(gè)函數(shù)是結(jié)果保存到靜態(tài)文件中,第二個(gè)是把所有的模板分析變量都置為空,以免批量處理時(shí)相互影響。

二,實(shí)現(xiàn)靜態(tài)網(wǎng)頁生成。
$itpl->set_file(“main”,”mian.tpl”);
//分析模板變量
…..
//分析main?mains
$tpl->parse("mains","main");
//把分析結(jié)果mains存入main.html
$tpl->savetofile("main.html","mains");
//置空
$tpl->renew();//至關(guān)重要
?>

呵呵,是不是很簡單,main.html就是我們要的內(nèi)容。下面是一個(gè)結(jié)合數(shù)據(jù)庫的例子,并用函數(shù)封裝了起來。
//$aid是數(shù)據(jù)庫中的文章id,$table是表名稱,$template是模板地址,$tpl是template.inc的一個(gè)實(shí)例
//每一個(gè)aid對應(yīng)一個(gè)靜態(tài)網(wǎng)頁地址,都存在一個(gè)數(shù)據(jù)表中
//表的結(jié)構(gòu)類似于 aid target title
// 1 a1.html ….
// 2 a2.html ….
// 3 a3.html ….
function staticInfo($aid){
global $table,$template,$tpl;
//查詢數(shù)據(jù)庫
$res=mysql_query(“select * from $table where aid=’$aid’”);
//取出數(shù)據(jù)
$array=mysql_fetch_array($res);
//讀靜態(tài)網(wǎng)頁地址,標(biāo)題。
$target=$array[“target”];
$title=$array[“title”];
//分析模板
$tpl->set_file(“main”,$template);
//把模板中的{title}變量換成$title
$itpl->set_var(“title”,$title”);
//分析整個(gè)模板
$itpl->set_var(“mains”,”main”);
//把mains寫入文件
$tpl->savetofile($target,"mains");
//置空
$tpl->renew();
}
?>

這樣我們就可以用函數(shù)staticInfo()把我們想要處理的任一篇文章都生成靜態(tài)網(wǎng)頁。表$target里也可以包含文章內(nèi)容,作者,來源等等,方法是一樣的。

三,更新靜態(tài)網(wǎng)頁
一篇文章加入數(shù)據(jù)庫后,由于一些原因我們總要修改一些文章。這時(shí)候,只要把相應(yīng)的靜態(tài)網(wǎng)頁重新生成一次即可。這是非常方便的,因?yàn)楸碇幸呀?jīng)有了靜態(tài)網(wǎng)頁的目標(biāo)地址target字段。

可以看出關(guān)鍵所在,一篇文章生成靜態(tài)網(wǎng)頁的關(guān)鍵所在就是$template(模板地址),$target(目標(biāo)地址)。前者,我們可以先確定,后者可以由你隨心所欲的為每篇文章設(shè)置一個(gè)地址。常用的有1,時(shí)間戳 2,時(shí)分秒 3,根據(jù)文章id。因?yàn)檫@些重復(fù)的機(jī)會(huì)會(huì)非常小的。

四,批量生成靜態(tài)網(wǎng)頁.
有了單個(gè)文章生成的靜態(tài)網(wǎng)頁的函數(shù)了,那么批量生成是非常簡單的。就是獲取所有的文章aid,然后套入函數(shù)即可。
//引用模板類
require”template.inc”;
//引入函數(shù)
require”functions.php”;
//一些變量的定義
$table=”art”;
$template=”template/info.tpl”;
$tpl=new Template(“.”);
//連接mysql,選擇數(shù)據(jù)庫
mysql_connect(“l(fā)ocalhost”,”root’,””);
mysql_select_db(“article”);
//發(fā)送查詢語句
$res=mysql_query(“select aid from $table”);
while($r=mysql_fetch_array($res)){
$aid=$r[“aid”];
//生成靜態(tài)網(wǎng)頁
staticInfo($aid);
}
//結(jié)束
echo”所有靜態(tài)網(wǎng)頁更新/生成成功”;
?>

上面就是完整的例子。我們做cms的流程可以如下:
1,記者發(fā)稿(把稿件內(nèi)容放入數(shù)據(jù)庫)
2,編輯審查(如果他認(rèn)為可以發(fā)布,那么就可以把這些內(nèi)容生成靜態(tài)網(wǎng)頁)
3,退回稿件(把生成的靜態(tài)網(wǎng)頁刪除,把數(shù)據(jù)庫中的內(nèi)容刪除)

然后,我們訪問到的網(wǎng)站內(nèi)容就都是靜態(tài)的了。一個(gè)問題就是,這種方法會(huì)不會(huì)占用很多空間內(nèi)?http://www.csdn.com.cn 有上千篇文章了,只占用了20M空間。反過來說,如果你有10000篇文章的話,你不會(huì)吝嗇到只買200M的空間吧?

或許你對生成靜態(tài)的文章列表感到困惑,其實(shí)方法是一樣的,就是 計(jì)算頁碼? 分析每個(gè)頁碼的內(nèi)容 ? 寫入文件。 分析每個(gè)頁碼的內(nèi)容,當(dāng)然是寫個(gè)函數(shù)咯,如果你一頁一頁的生成,恐怕被人嘲笑 ^_^。

靜態(tài)網(wǎng)頁不僅僅是可以減輕服務(wù)器負(fù)擔(dān),提高訪問速度,也可以方便地做鏡像網(wǎng)站,方便地備份,減少被攻擊損失程度,加快還原速度。當(dāng)然靜態(tài)網(wǎng)頁也會(huì)給大家?guī)碇T多不便的地方,你需要在動(dòng)態(tài)和靜態(tài)之間做出平衡,也可以在靜態(tài)網(wǎng)頁中加入js調(diào)用的php代碼,來達(dá)到計(jì)數(shù),即時(shí)更新等目的。(完)



Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1488
72
How to use PHP to develop a Q&A community platform Detailed explanation of PHP interactive community monetization model How to use PHP to develop a Q&A community platform Detailed explanation of PHP interactive community monetization model Jul 23, 2025 pm 07:21 PM

1. The first choice for the Laravel MySQL Vue/React combination in the PHP development question and answer community is the first choice for Laravel MySQL Vue/React combination, due to its maturity in the ecosystem and high development efficiency; 2. High performance requires dependence on cache (Redis), database optimization, CDN and asynchronous queues; 3. Security must be done with input filtering, CSRF protection, HTTPS, password encryption and permission control; 4. Money optional advertising, member subscription, rewards, commissions, knowledge payment and other models, the core is to match community tone and user needs.

Automating MySQL Deployments with Infrastructure as Code Automating MySQL Deployments with Infrastructure as Code Jul 20, 2025 am 01:49 AM

To achieve MySQL deployment automation, the key is to use Terraform to define resources, Ansible management configuration, Git for version control, and strengthen security and permission management. 1. Use Terraform to define MySQL instances, such as the version, type, access control and other resource attributes of AWSRDS; 2. Use AnsiblePlaybook to realize detailed configurations such as database user creation, permission settings, etc.; 3. All configuration files are included in Git management, support change tracking and collaborative development; 4. Avoid hard-coded sensitive information, use Vault or AnsibleVault to manage passwords, and set access control and minimum permission principles.

How to set environment variables in PHP environment Description of adding PHP running environment variables How to set environment variables in PHP environment Description of adding PHP running environment variables Jul 25, 2025 pm 08:33 PM

There are three main ways to set environment variables in PHP: 1. Global configuration through php.ini; 2. Passed through a web server (such as SetEnv of Apache or fastcgi_param of Nginx); 3. Use putenv() function in PHP scripts. Among them, php.ini is suitable for global and infrequently changing configurations, web server configuration is suitable for scenarios that need to be isolated, and putenv() is suitable for temporary variables. Persistence policies include configuration files (such as php.ini or web server configuration), .env files are loaded with dotenv library, and dynamic injection of variables in CI/CD processes. Security management sensitive information should be avoided hard-coded, and it is recommended to use.en

How to use PHP to develop product recommendation module PHP recommendation algorithm and user behavior analysis How to use PHP to develop product recommendation module PHP recommendation algorithm and user behavior analysis Jul 23, 2025 pm 07:00 PM

To collect user behavior data, you need to record browsing, search, purchase and other information into the database through PHP, and clean and analyze it to explore interest preferences; 2. The selection of recommendation algorithms should be determined based on data characteristics: based on content, collaborative filtering, rules or mixed recommendations; 3. Collaborative filtering can be implemented in PHP to calculate user cosine similarity, select K nearest neighbors, weighted prediction scores and recommend high-scoring products; 4. Performance evaluation uses accuracy, recall, F1 value and CTR, conversion rate and verify the effect through A/B tests; 5. Cold start problems can be alleviated through product attributes, user registration information, popular recommendations and expert evaluations; 6. Performance optimization methods include cached recommendation results, asynchronous processing, distributed computing and SQL query optimization, thereby improving recommendation efficiency and user experience.

Securing MySQL Connections with SSL/TLS Encryption Securing MySQL Connections with SSL/TLS Encryption Jul 21, 2025 am 02:08 AM

Why do I need SSL/TLS encryption MySQL connection? Because unencrypted connections may cause sensitive data to be intercepted, enabling SSL/TLS can prevent man-in-the-middle attacks and meet compliance requirements; 2. How to configure SSL/TLS for MySQL? You need to generate a certificate and a private key, modify the configuration file to specify the ssl-ca, ssl-cert and ssl-key paths and restart the service; 3. How to force SSL when the client connects? Implemented by specifying REQUIRESSL or REQUIREX509 when creating a user; 4. Details that are easily overlooked in SSL configuration include certificate path permissions, certificate expiration issues, and client configuration requirements.

How to build an online customer service robot with PHP. PHP intelligent customer service implementation technology How to build an online customer service robot with PHP. PHP intelligent customer service implementation technology Jul 25, 2025 pm 06:57 PM

PHP plays the role of connector and brain center in intelligent customer service, responsible for connecting front-end input, database storage and external AI services; 2. When implementing it, it is necessary to build a multi-layer architecture: the front-end receives user messages, the PHP back-end preprocesses and routes requests, first matches the local knowledge base, and misses, call external AI services such as OpenAI or Dialogflow to obtain intelligent reply; 3. Session management is written to MySQL and other databases by PHP to ensure context continuity; 4. Integrated AI services need to use Guzzle to send HTTP requests, safely store APIKeys, and do a good job of error handling and response analysis; 5. Database design must include sessions, messages, knowledge bases, and user tables, reasonably build indexes, ensure security and performance, and support robot memory

How to develop AI intelligent form system with PHP PHP intelligent form design and analysis How to develop AI intelligent form system with PHP PHP intelligent form design and analysis Jul 25, 2025 pm 05:54 PM

When choosing a suitable PHP framework, you need to consider comprehensively according to project needs: Laravel is suitable for rapid development and provides EloquentORM and Blade template engines, which are convenient for database operation and dynamic form rendering; Symfony is more flexible and suitable for complex systems; CodeIgniter is lightweight and suitable for simple applications with high performance requirements. 2. To ensure the accuracy of AI models, we need to start with high-quality data training, reasonable selection of evaluation indicators (such as accuracy, recall, F1 value), regular performance evaluation and model tuning, and ensure code quality through unit testing and integration testing, while continuously monitoring the input data to prevent data drift. 3. Many measures are required to protect user privacy: encrypt and store sensitive data (such as AES

How to make PHP container support automatic construction? Continuously integrated CI configuration method of PHP environment How to make PHP container support automatic construction? Continuously integrated CI configuration method of PHP environment Jul 25, 2025 pm 08:54 PM

To enable PHP containers to support automatic construction, the core lies in configuring the continuous integration (CI) process. 1. Use Dockerfile to define the PHP environment, including basic image, extension installation, dependency management and permission settings; 2. Configure CI/CD tools such as GitLabCI, and define the build, test and deployment stages through the .gitlab-ci.yml file to achieve automatic construction, testing and deployment; 3. Integrate test frameworks such as PHPUnit to ensure that tests are automatically run after code changes; 4. Use automated deployment strategies such as Kubernetes to define deployment configuration through the deployment.yaml file; 5. Optimize Dockerfile and adopt multi-stage construction

See all articles