Home >Backend Development >PHP Tutorial >How to generate static html pages in php (2 methods), 2 static methods_PHP tutorial

How to generate static html pages in php (2 methods), 2 static methods_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 09:08:281038browse

How to generate static html pages in php (2 methods), 2 static types

Because every time the user clicks on the dynamic link, a data query request will be sent to the server. For a website with potentially millions of visits, this is undoubtedly a huge burden on the server, so converting dynamic data into static HTML pages has become the first choice to save manpower and material resources.

Because I had no corresponding experience before, I thought this technology was very mysterious at first, but after looking at some examples, I found that it is not that complicated (but the information on the Internet is not particularly detailed). After a morning and afternoon experiment, I finally completed the task I was supposed to do. Here are some thoughts and a simple example

I hope the prawns won’t laugh at me

Generally speaking, there are two ways to use php to convert and output html pages. The article quoting Da Xia is as follows:

The first one: using templates.

There are currently a lot of PHP templates, including the powerful smarty and the simple and easy-to-use smarttemplate. Each of their templates has a function to get the output content. The way we generate static pages is to use this function. The advantage of using this method is that the code is clearer and more readable.

Here I use smarty as an example to illustrate how to generate a static page:

<&#63;php
require("smarty/Smarty.class.php");
$t = new Smarty;
$t->assign("title","Hello World!");
$content = $t->fetch("templates/index.htm");
//这里的 fetch() 就是获取输出内容的函数,现在$content变量里面,就是要显示的内容了
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
&#63;> 

The second method: use the ob series of functions.

The functions used here are mainly ob_start(), ob_end_flush(), ob_get_content(), where ob_start() means to open the browser buffer. After opening the buffer, all non-file header information from the PHP program will not will be sent, but stored in the internal buffer until you use ob_end_flush(). The most important function here is ob_get_contents(). The function of this function is to obtain the contents of the buffer, which is equivalent to the fetch() above. ), the same principle applies.

<&#63;php
ob_start();
echo "Hello World!";
$content = ob_get_contents();//取得php页面输出的全部内容
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
&#63;>

The second method I chose is to use the ob series of functions

I was a little confused when I first read this. Later I learned that ob means output buffering, which is output buffering

When you are ready to output, all the data is saved in ob. After the server parses the php, all the html codes to be output to the client are stored in ob. If we want to output an html static page, we only need to take out the cache and write it. Just one html page

So the principle is actually very simple

Several functions are used here. Since I am new to PHP and I don’t understand many functions, I will explain them here. I hope it can help everyone

ob_start(): Start "capturing" the cache, that is, start from here and open the browser's cache

ob_end_flush(): Turn off browser cache

ob_get_content(): Read cache content

fopen("File path", "Open mode") opens a file. There are several opening modes for this function. Here are the main modes:

"r" Open in read-only mode and point the file pointer to the file header.

“r” opens in read-write mode and points the file pointer to the file header.

"w" turns on writing mode, points the file pointer to the file header and truncates the file size to zero. If the file does not exist, try to create it.

"w" opens in read-write mode, points the file pointer to the file header and truncates the file size to zero. If the file does not exist, try to create it.

fwrite("File name", "Write content") Write file

fclose() closes the file

Since there are many html files I want to convert, there may be hundreds of them, so the path to fopen cannot be statically specified here. You can set a path variable to save the id and other information sent by the user to facilitate the naming of html files. Here is what I combined A simple example of reading xml data in php last time

<&#63;php
ob_start();//打开浏览器缓存
//下面是读取xml数据
$parser = xml_parser_cr&#101;ate(); //创建一个parser编辑器
xml_set_element_handler($parser, "startElement", "endElement");//设立标签触发时的相应函数 这里分别为startElement和endElenment
xml_set_character_data_handler($parser, "characterData");//设立数据读取时的相应函数
$xml_file="1.xml";//指定所要读取的xml文件,可以是url
$filehandler = fopen($xml_file, "r");//打开文件
while ($data = fread($filehandler, 4096)) 
{
xml_parse($parser, $data, feof($filehandler));
}//每次取出4096个字节进行处理
fclose($filehandler);
xml_parser_free($parser);//关闭和释放parser解析器
$name=false;
$position=false;
function startElement($parser_instance, $element_name, $attrs) //起始标签事件的函数
{
global $name,$position;
if($element_name=="NAME")
{
$name=true;
$position=false;
echo "名字:";
}
if($element_name=="POSITION")
{$name=false;
$position=true;
echo "职位:";
}
}
function characterData($parser_instance, $xml_data) //读取数据时的函数
{
global $name,$position;
if($position)
echo $xml_data."<br />";
if($name)
echo $xml_data."<br />";
}
function endElement($parser_instance, $element_name) //结束标签事件的函数
{
global $name,$position;
$name=false;
$position=false;
}
//xml数据读取完毕
$htmlname=$id.".html";//$id可以自己定义 这里代表用户传来的id
$htmlpath="archives/".$htmlname; //设置路径变量
$content = ob_get_contents();//取得php页面输出的全部内容
$fp = fopen($htmlpath, "w");
fwrite($fp, $content);
fclose($fp);
&#63;>

The above content is to share with you the method of generating static html page in php (2 methods). I hope you like it.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1054937.htmlTechArticlephp methods to generate static html pages (2 methods), 2 static methods because each time the user clicks on the dynamic link Sometimes the server will send data query requirements, and the number of visits may reach...
Statement:
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