php簡単静的ページの生成過程


一、使用する関連技術キーワード:PHP、 Appache、                                               mod_rewrite (RewriteCond,RewriteRule)アドレスを書き換えて、                                               OBシリーズ関数バッファ                                               file_put.contensts生成html二、プロセス:ユーザが要求url?id=xを出す ,文章の存在を判断する                        (1)存在すると直接に対応するHtmlページに移動します。                        (2)phpでデータベースデータを読み込み、htmlファイルを生成し、指定ディレクトリに保存することはありません。三、実現方法:(1)住所の書き換えはAppaceのmod_rewriteモジュールにおけるRewriteRuleコマンドの書き換えを実現します。rewriteのオープンと簡単ルールは本博のもう一つの編を見てください。http://hi.baidu.com/alex%5Fwang5 ... 0346 ffb 3 fb 952 e. )。 (2)文章があるかどうかを判断するアプリ のmod_rewriteモジュールのRewriteCond命令(3)でhtmlファイルを生成します。           OBstar()バッファを開けて、文章を読み込むphpを含めてファイルを使います。put.contenstsは、取得したバッファ内容を指定HTMlファイルに書き込みます。四、コード/Test ディレクトリの .httaccess ファイル内容:RewriteEngine On RewriteRule ^index. /news.php [L)RewriteCond %{REQUST_FILENAME)  !-s RewriteRule ^html/news_([0-9+).html getsnews.php?id=$1 [L)news.phpへのアクセスは、 local host/Test/index. 実現は第二句から RewriteRule ^index. Test/news.php [L) news.phpを実現 =============================> news.phpは記事タイトルリンクを一覧表示します。

<?php
header("Content-Type:text/html; charset=gbk"); //
mysql_connect("localhost","root","");
mysql_query('SET NAMES gbk'); // gbk ,
mysql_select_db("test");

$sql = "Select `id`,`title` FROM `arc` order by `id` DESC";
$rs = mysql_query($sql);
while($row = mysql_fetch_array($rs) ){
echo "<a href='/Test/html/news_$row[id].html'>$row[title]</a><br>";
}
?>
は、例えば<a>を生成します。 href='/Test/html/news_3.html php静的なページを実現します。 http://localhost/Test/html/news_3.html の請求時にAppacheが判断します。 ニュース.3.html  存在するかどうかは .httaccessの中の第三文  RewriteCond %{REQUST_FILENAME)  !-s  実装:     RewriteCond  は、「リダイレクト発生条件」です。REQUST_FILENAME このパラメータは「クライアント要求のファイル名」'-s'です。  (は空ではない通常のファイルです。 指定されたファイルが存在し、かつサイズが0より大きい従来のファイルであるかをテストします。  !マッチ条件の反転を表します。だから RewriteCond この文は、要求リンクが存在しない場合を意味します。 下記の実行を行います RewriteRule ルールだからリクエストしたnews_3.html 存在しない場合は住所を書き換えます。 getsnews.php?id=3 処理に来ます。3.html 存在する場合はこのファイルを直接読み込む)。getsnews.php ===================>機能:パラメータ転送の整合性を判断し、該当ファイルを呼び出してhtmlファイルを生成します。

<?php
$id =$_GET['id'];
$root =& $_SERVER['DOCUMENT_ROOT'];
$filename = "news_".$id.".html";
$file = $root."/Test/html/".$filename;
ob_start();
include($root."/Test/newsDetail.php");
file_put_contents($file,ob_get_contents());
ob_end_flush(); 
?>
news Detail.php ====================> データベースからデータを読み込み、ニュースコンテンツを生成し、コンテンツがgetnews.phpによって取り込まれます。 ディレクトリから生成 ニュース.記事ID. 名前付きのファイル。  PS: 最初は該当ページがあるかどうかを判断する時に採用したのは php 内蔵する file_exists() 判断は、Appheのではなく RewriteCond、つまりないです。 RewriteCond %{REQUST_FILENAME)  !-sです。実行可能に見えますが、結果として「循環再方向付け」という問題が発生します。         newsになる3.html 存在しない場合 私たちは使いたいです getsnews.php生成news_3.html ,生成が完了したら、ステアリングが必要です。 ニュース.3.html ,そしてもう一度mod_をお願いするようになりました。rewriteまた起動します ニュース.3.書き換えは getsnews.php?id=3 これは死の循環を形成した。ファイルの存在性の判断を任せる。 RewriteCond ,指定されたhtmlファイルが存在しない場合のみ書き換え規則を有効にします。このように循環再配向の問題はなくなりました。         最初はfopenを使ってnews Detail.phpを開いていませんでしたが、生成した内容をfwriteにしました。その後、includeは静的なページを出力します。fhjr 999のアラームの下で、newDetail.phpをgetsnews.phpに含め、obシリーズ関数を通じて生成した内容をバッファに入れてからファイルを生成するようになりました。OBの効率は前者の20倍ぐらいです。