ホームページ >バックエンド開発 >PHPチュートリアル >PHPテクノロジを使用した静的ページ生成の実装_PHPチュートリアル

PHPテクノロジを使用した静的ページ生成の実装_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:22:27723ブラウズ

最初にいくつかの基本的な概念を確認しましょう。

1. PHP スクリプトと動的ページ。

PHPスクリプトは、埋め込みなどの方法でHTMLファイルと混合したり、クラスや関数のカプセル化などのテンプレートの形でユーザーリクエストを処理したりできるサーバーサイドスクリプトプログラムです。いずれにせよ、基本はこれです。クライアントが特定のページをリクエストします -----> Web サーバーは、指定された対応するスクリプトを処理します -----> スクリプトはサーバーにロードされます -----> 指定された PHP 解析サーバーによってスクリプトはブラウザによって解析され、HTML 言語形式が形成されます----> 解析された HTML ステートメントはパッケージの形式でブラウザに返されます。このことから、ページがブラウザに送信された後は PHP が存在せず、HTML ステートメントに変換および解析されたことがわかります。実際、クライアントのリクエストは動的ファイルであり、PHP はそれを対応するページに解析してブラウザに送り返します。このページの処理方法は「動的ページ」と呼ばれます。

2. 固定ページ。

静的ページとは、サーバー側に実際に存在し、HTMLとJS、CSS、その他のクライアント側で実行されるスクリプトのみを含むページを指します。扱い方としては。クライアントが特定のページをリクエストします - --- > WEB サーバーが特定のページを確認してロードします - - - > WEB サーバーはそのページをパッケージの形式でブラウザに返します。このプロセスから、動的ページを比較して確認できます。動的ページは Web サーバーの PHP パーサーで解析する必要があり、通常、HTML 言語情報パッケージを形成する前にデータベースに接続してデータベース アクセス操作を実行する必要がありますが、静的ページは解析または接続する必要がありません。データベースに直接送信できるため、サーバーの負荷が大幅に軽減され、サーバーの負荷容量が向上し、ページを開く速度と Web サイト全体を開く速度が大幅に向上します。ただし、その欠点は、リクエストを動的に処理できないことと、ファイルが実際にサーバー上に存在する必要があることです。

3. テンプレートとテンプレート分析。

テンプレートは、コンテンツのhtmlファイルがまだ入力されていないことを意味します。例:

temp.html

コード:

以下は引用部分です:

{ title }

これは { file } ファイルのテンプレートです

PHP 処理:

以下は引用部分です:

templetest.php

コード:

$title = "HP愛好家テストテンプレート";

$file = "TwoMax Interテストテンプレート、

作成者: Sheyi";

$fp = fopen ("temp.html","r"); $content = fread ($fp,filesize ("temp.html"));

$content .= str_replace ("{ file }",$file,$content); }",$ title,$content);

echo $content;

?>

テンプレート解析処理とは、PHPスクリプトを解析して処理した結果をテンプレートに埋め込む処理です。通常はテンプレート クラスの助けを借ります。現在、より一般的なテンプレート解析クラスには、phplib、smarty、fastsmarty などが含まれます。テンプレート解析処理の原則は、通常、置換です。また、判定やループなどの処理をテンプレートファイルに入れて解析クラスで処理することに慣れているプログラマもいますが、その典型的な応用が単純にループ処理であるブロック概念です。 PHP スクリプトはループの数、ループの方法などを指定し、テンプレート解析クラスがこれらの操作を実装します。

それでは、静的ページと動的ページの長所と短所を比較した後、PHP を使用して静的ファイルを生成する方法について話しましょう。

PHP による静的ページの生成とは、PHP の動的解析と HTML ページの出力を指すのではなく、PHP を使用して HTML ページを作成することを指します。同時に、HTML は書き込み可能ではないため、作成した HTML が変更された場合は、削除して再生成する必要があります。 (もちろん、通常のルールを使用して変更することもできますが、個人的には、削除して再生成するよりも速いと思います。メリットはありません。)

本題に戻ります。 PHP のファイル操作関数を使用したことのある PHP ファンは、PHP にファイルを開くファイル操作関数 fopen があることを知っています。ファイルが存在しない場合は、作成してみてください。これは、PHP を使用して HTML ファイルを作成できる理論的基礎です。 HTML ファイルの保存に使用されるフォルダーに書き込み権限 (つまり、権限定義 0777) がある限り、ファイルを作成できます。 (UNIX系の場合、Win系は考慮する必要はありません。) 上記の例を例に挙げると、最後の文を変更して、test.htmlという名前の静的ファイルをtestディレクトリに生成するように指定すると、

コード:

以下は引用部分です:

$title = "TwoMax International test templatet";

$file = "TwoMax Inter test templatet,

author:_Max">Matrix@Two_Max";

$fp = fopen ("temp .html","r");

$content = fread ($fp,filesize ("temp.html"));

$content .= str_replace ("{ file }",$file); ,$content);

$content .= str_replace ("{ title }",$title,$content);

$filename = "test/test.html"; handle = fopen ($ filename,"w"); // ファイルポインタを開いてファイルを作成します

/*

  检查文件是否被创建且可写

  */

  if (!is_writable ($filename)){

  die ("文件:".$filename."不可写,请检查其属性后重试!");

  }

  if (!fwrite ($handle,$content)){ //将信息写入文件

  die ("生成文件".$filename."失败!");

  }

  fclose ($handle); //关闭指针

  die ("创建文件".$filename."成功!");

  ?>

  实际应用中常见问题解决方案参考:

  一、文章列表问题:

  在数据库中创建字段,记录文件名,每生成一个文件,将自动生成的文件名存入数据库,对于推荐文章,只需指向存放静态文件的指定文件夹中的该页面即可。利用PHP操作处理文章列表,存为字符串,生成页面时替换此字符串即可。如,在页面中放置文章列表的表格加入标记{ articletable },而在PHP处理文件中:

  Code:

以下是引用片段:

  $title = "拓迈国际测试模板";

  $file = "TwoMax Inter test templet,

  author:_Max">Matrix@Two_Max";

  $fp = fopen ("temp.html","r");

  $content = fread ($fp,filesize ("temp.html"));

  $content .= str_replace ("{ file }",$file,$content);

  $content .= str_replace ("{ title }",$title,$content);

  // 生成列表开始

  $list = '''''''';

  $sql = "select id,title,filename from article";

  $query = mysql_query ($sql);

  while ($result = mysql_fetch_array ($query)){

  $list .= ''''''''.$result[''''title''''].''''

  '''';

  }

  $content .= str_replace ("{ articletable }",$list,$content);

  //生成列表结束

  // echo $content;

  $filename = "test/test.html";

  $handle = fopen ($filename,"w"); //打开文件指针,创建文件

  /*

  检查文件是否被创建且可写

  */

  if (!is_writable ($filename)){

  die ("文件:".$filename."不可写,请检查其属性后重试!");

  }

  if (!fwrite ($handle,$content)){ //将信息写入文件

  die ("生成文件".$filename."失败!");

  }

  fclose ($handle); //关闭指针

  die ("创建文件".$filename."成功!");

  ?>

  二、分页问题。

  如我们指定分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们通过查询得到如下参数:1,总页数;2,每页篇数。第二步, for ($i = 0; $i < allpages; $i++),页面元素获取,分析,文章生成,都在此循环中执行。不同的是,die ("创建文件".$filename."成功!";这句去掉,放到循环后的显示,因为该语句将中止程序执行。例:

  Code:

以下是引用片段:

  $fp = fopen ("temp.html","r");

  $content = fread ($fp,filesize ("temp.html"));

  $onepage = ''''20'''';

  $sql = "select id from article where channel=''''$channelid''''";

  $query = mysql_query ($sql);

  $num = mysql_num_rows ($query);

  $allpages = ceil ($num / $onepage);

  for ($i = 0;$i<$allpages; $i++){

  if ($i == 0){

  $indexpath = "index.html";

  } else {

  $indexpath = "index_".$i."html";

  }

  $start = $i * $onepage;

  $list = '''''''';

  $sql_for_page = "select name,filename,title from article where channel=''''$channelid'''' limit $start,$onepage";

  $query_for_page = mysql_query ($sql_for_page);

  while ($result = $query_for_page){

  $list .= ''''''''.$title.''''

  '''';

  }

  $content = str_replace ("{ articletable }",$list,$content);

  if (is_file ($indexpath)){

  @unlink ($indexpath); //若文件已存在,则删除

  }

  $handle = fopen ($indexpath,"w"); //打开文件指针,创建文件

  /*

  检查文件是否被创建且可写

  */

  if (!is_writable ($indexpath)){

  echo "文件:".$indexpath."不可写,请检查其属性后重试!"; //修改为echo

  }

  if (!fwrite ($handle,$content)){ //将信息写入文件

  echo "生成文件".$indexpath."失败!"; //修改为echo

  }

  fclose ($handle); //关闭指针

  }

  fclose ($fp);

  die ("生成分页文件完成,如生成不完全,请检查文件权限系统后重新生成!");

  ?>

一般的なアイデアは次のとおりです。その他のデータ生成、データの入出力チェック、ページ分割コンテンツのポインティングなどを必要に応じてページに追加できます。

実際の記事システムの処理プロセスでは、考慮すべき点がまだ多く、動的ページとの違いには注意が必要です。しかし、一般的な考え方はこれであり、他の側面も類推して導き出すことができます。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446980.html技術記事まず、いくつかの基本概念を確認してみましょう。 1. PHP スクリプトと動的ページ。 PHP スクリプトは、埋め込み、クラス、関数などのメソッドを通じて HTML ファイルと混合できるサーバー側のスクリプト プログラムです...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。