PHPを使用して静的HTMLページを生成する2つの一般的な方法

WBOY
リリース: 2016-07-29 09:15:26
オリジナル
1007 人が閲覧しました

ユーザーが動的リンクをクリックするたびに、データ クエリ リクエストがサーバーに送信されるためです

何百万もの訪問者がいる可能性がある Web サイトの場合、これは間違いなくサーバーに大きな負担になります

そのため、動的データを変換しますそれを静的 HTML ページに変換することは、人的資源と物的リソースを節約するための第一の選択肢になりました

私はこれまで対応する経験がなかったので、最初はこのテクノロジーが非常に謎に満ちていると思いました

しかし、いくつかの例を読んだ後、そうではないことがわかりましたとても複雑です(ただし、インターネット上の情報は特に詳細ではありません)

午前と午後の実験を経て、最終的にタスクを完了しました。ここにいくつかの考えと簡単な例を示します

笑わないでください

。一般的に、HTML ページを変換して出力するには、PHP を使用します。Da Xia の記事を引用するには、次の 2 つの方法があります:

1 つ目の方法: テンプレートを使用します。現在、強力な Smarty やシンプルで使いやすい Smarttemplate など、多数の PHP テンプレートがあります。各テンプレートには、出力コンテンツを取得する関数があります。静的ページを生成するには、この関数を使用します。この方法を使用する利点は、コードがより明確で読みやすいことです。

ここでは、静的ページを生成する方法を説明するために例として Smarty を使用します:

  1. require("smarty/Smarty.class.php");
  2. $t = new Smarty;
  3. $t ->assign("title","Hello World!");
  4. $content = $t->fetch("templates/index.htm");
  5. //ここでの fetch() は次のとおりです出力コンテンツ関数を取得するには、$content 変数に表示するコンテンツを入れます
  6. $fp = fopen("archives/2005/05/19/0001.html", "w");
  7. fwrite($ fp, $content );
  8. fclose($fp);
  9. ?>

2 番目の方法: ob シリーズの関数を使用します。ここで使用される関数は主に ob_start()、ob_end_flush()、ob_get_content() です。ここで、ob_start() はブラウザのバッファを開くことを意味し、代わりに PHP プログラムからのファイル以外のヘッダー情報はすべて送信されません。この関数の最も重要な関数は、上記の fetch() と同等のバッファの内容を取得することです。理由は同じです。

  1. ob_start();
  2. echo "Hello World!";
  3. $content = ob_get_contents();//php ページによって出力されたすべてのコンテンツを取得します
  4. $fp = fopen( "archives /2005/05/19/0001.html", "w");
  5. fwrite($fp, $content);
  6. fclose($fp);
  7. ?>

2 番目のタイプ I方法は、ob シリーズの関数を使用することです

最初にこれを読んだとき、私は少しわかりませんでしたが、後で、ob が出力バッファリング、つまり出力キャッシュであることを知りました

出力の準備ができたら、すべてのデータが保存されます。サーバーがphpを解析した後、クライアントに出力するHTMLコードはすべてobに保存されます。HTMLの静的ページを出力したい場合は、キャッシュを取り出してHTMLページに書き込むだけです。

その原理は実際には非常に単純です

ここではいくつかの関数が使用されています。私はPHPを初めて使用するため、多くの関数を理解していませんので、ここで説明します

ob_start()。 : キャッシュの「キャプチャ」を開始します。つまり、ここからブラウザのキャッシュを開きます

ob_end_flush(): ブラウザのキャッシュをオフにします

ob_g​​et_content(): キャッシュされたコンテンツを読み取ります

fopen("ファイルパス", "オープンモード" ) ファイルを開く この関数にはいくつかの開くモードがあります。主なモードは次のとおりです:

"r" 読み取り専用モードで開き、ファイル ポインタをファイル ヘッダーにポイントします。

「r+」 読み取りおよび書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。

"w" は書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。

「w+」 読み取りおよび書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。

fwrite("ファイル名", "書き込み内容") ファイルを書き込みます

fclose() ファイルを閉じます

変換したいHTMLファイルはたくさんあるので、数百になる可能性があるので、fopenへのパスはありませんここで静的に指定することができます。HTML ファイルの名前付けを容易にするために、ユーザーが送信した ID やその他の情報を保存できるパス変数を設定できます。前回、PHP で XML データを読み取る方法の簡単な例を示します。

  1. ob_start();//ブラウザキャッシュを開きます
  2. //以下はXMLデータを読み込みます
  3. $parser = xml_parser_create(); //パーサーエディタを作成します
  4. xml_set_element_handler($parser, "startElement", "endElement");//タグトリガー設定時の対応関数はそれぞれstartElementとendElenmentです
  5. xml_set_character_data_handler($parser, "characterData");//データ設定時reading 対応する関数
  6. $xml_file="1.xml";// 読み取る XML ファイルを指定します (url など)
  7. $filehandler = fopen($xml_file, "r");// ファイルを開きます
  8. while ($data = fread($filehandler, 4096))
  9. {
  10. xml_parse($parser, $data, feof($filehandler));
  11. }//それぞれの処理のために 4096 バイトを取り出しますtime
  12. fclose($filehandler);
  13. xml_parser_free($parser);//パーサー parser を閉じて解放します
  14. $name=false;
  15. $position=false;
  16. function startElement( $parser_instance , $element_name, $attrs) //開始タグイベントの関数
  17. {
  18. global $name,$position;
  19. if($element_name=="NAME")
  20. {
  21. $name=true;
  22. $position=false;
  23. echo "名前:";
  24. }
  25. if($element_name=="POSITION")
  26. {$name=false;
  27. $position=true;
  28. echo "位置: ";
  29. }
  30. }
  31. function CharacterData($parser_instance, $xml_data) //データ読み込み時の関数
  32. {
  33. global $name,$position;
  34. if($position)
  35. echo $xml_data."
    ";
  36. if($name)
  37. echo $xml_data."
    ";
  38. }
  39. function endElement($parser_instance, $element_name ) //タグイベントを終了する関数
  40. {
  41. global $name,$position;
  42. $name=false;
  43. $position=false;
  44. }
  45. //Xmlデータの読み込みが完了
  46. $ htmlname=$id.".html";//$id はユーザーによって渡される ID を表します
  47. $htmlpath="archives/".$htmlname; //パス変数を設定します
  48. $ content = ob_get_contents( );//PHP ページによって出力されたすべてのコンテンツを取得します
  49. $fp = fopen($htmlpath, "w");
  50. fwrite($fp, $content);
  51. fclose($fp) ;
  52. ?>

転載: http://www.cnblogs.com/awinlei/archive/2013/03/04/2942962.html

上記では、PHP を使用して静的 HTML ページを生成するための 2 つの一般的な方法と、関連するコンテンツを紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!