1. PHP スクリプトと動的ページ。
PHPスクリプトは、埋め込みなどの方法でHTMLファイルと混合したり、クラスや関数のカプセル化などのテンプレートの形でユーザーリクエストを処理したりできるサーバーサイドスクリプトプログラムです。いずれにせよ、基本はこれです。クライアントが特定のページをリクエストします -----> WEB サーバーは、指定された対応するスクリプトを処理に導入します -----> スクリプトはサーバーにロードされます -----> 指定された PHP 解析サーバーによってスクリプトはブラウザによって解析され、HTML 言語形式が形成されます----> 解析された HTML ステートメントはパッケージの形式でブラウザに返されます。このことから、ページがブラウザに送信された後は PHP が存在せず、HTML ステートメントに変換および解析されたことがわかります。実際、クライアントのリクエストは動的ファイルであり、PHP はそれを対応するページに解析してブラウザに送り返します。このページの処理方法は「動的ページ」と呼ばれます。
2つ目、静的ページ。
静的ページとは、サーバー側に実際に存在し、HTMLとJS、CSS、その他のクライアント側スクリプトのみを含むページを指します。扱い方としては。クライアントは特定のページをリクエストします---> WEB サーバーは特定のページを確認してロードします---> WEB サーバーはそのページをパッケージの形式でブラウザに返します。このプロセスから、動的ページを比較して確認できます。動的ページは WEB サーバーの PHP パーサーで解析する必要があり、通常、HTML 言語情報パッケージを形成する前にデータベースに接続してデータベース アクセス操作を実行する必要がありますが、静的ページは解析したり接続したりする必要はありません。データベースに直接送信できるため、サーバーの負荷が大幅に軽減され、サーバーの負荷容量が向上し、ページを開く速度と Web サイト全体を開く速度が大幅に向上します。ただし、その欠点は、リクエストを動的に処理できないことと、ファイルが実際にサーバー上に存在する必要があることです。
3つ目、テンプレートとテンプレート分析。
テンプレートは、コンテンツのhtmlファイルがまだ入力されていないことを意味します。例:
{ title } PHP処理:
Templetest.php
,
author: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);
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 ディレクトリに test.html という名前の静的ファイルを生成するように指定すると、
php
$title = "http://siyizhu.com テスト テンプレート";
$file = "TwoMax Inter テスト テンプレート、
author: 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);
// echo $content;
$filename = "test/test.html"
$handle = fopen ($filename,"; w"); //ファイルポインタを開いてファイルを作成します
/*
ファイルが作成され書き込み可能か確認します
*/
if (!is_writable ($filename)){
die ("File :" .$filename."書き込み可能ではありません。プロパティを確認して再試行してください!");
}
if (!fwrite ($handle,$content)){ //ファイルに情報を書き込みます
die ( "Generate File ".$filename."Failed!");
fclose ($handle) //ポインタを閉じる
("Create file".$filename."Success!"); >
実際のアプリケーションでよくある問題の解決策の参考:
1. 記事リストの問題:
ファイルが生成されるたびに、ファイル名を記録します。データベース内の推奨記事については、静的ファイルが保存されている指定されたフォルダー内のページをポイントするだけです。 PHP 操作を使用して記事リストを処理し、文字列として保存し、ページの生成時にこの文字列を置き換えます。たとえば、ページ上の記事リストが配置されるテーブルと PHP 処理ファイルにマーク {articletable} を追加します:
$title = "http://siyizhu.com テスト テンプレート";
$file = "TwoMax Inter test Templet,
author: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 = "記事から id,title,filename を選択"
$query = mysql_query ($sql); result = mysql_fetch_array ($query) ){
$list .= '
'.$result['title'].' ';
}
$content .= str_replace ("{articletable}",$list,$content)
// リストの生成終了
; ;
$filename = "test /test.html";
$handle = fopen ($filename,"w"); //ファイルポインタを開き、ファイルを作成します
/*
ファイルが作成され書き込み可能です
*/
if (!is_writable ($filename)){
die ("ファイル: ".$filename." は書き込み可能ではありません。プロパティを確認して再試行してください!");
if (!fwrite ($handle,$ content)){ //ファイルに情報を書き込みます
die ("Generate file".$filename."Failed!")
}
fclose ($handle); ; //ポインタを閉じます
die ("Create File ".$filename." Success!");
?> 2 つ目は、ページングの問題です。
ページネーションを指定すると、1ページあたり20記事になります。データベースクエリ後の特定のサブチャネルリストには 45 個の記事があります。まず、クエリを通じて次のパラメータを取得します。1. 総ページ数。2. ページごとの記事数。 2 番目のステップ、for ($i = 0; $i
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("temp.html"));
$onepage = '20'; = "チャネル='$channelid'の記事からIDを選択";
$query = mysql_num_rows ($query)
$allpages = ceil ($num / $onepage); ;
for ($i = 0;$i<$allpages; $i++){
if ($i == 0){
$indexpath = "index.html"
} else {
$インデックスパス = "index_".$i."html";
$start = $i * $onepage = '';$sql_for_page = "channel='$channelid' の記事から名前、ファイル名、タイトルを選択 $start,$onepage";
$list .= '
'.$title.''
}
$content = str_replace ("{articletable}",$list,$content);
if (is_file ($indexpath)){
@unlink ($indexpath) // ファイルが既に存在する場合は削除します
;
}
$handle = fopen ($indexpath,"w"); //ファイルポインタを開き、ファイルを作成します
/*
ファイルが作成され、書き込み可能かどうかを確認します
*/
if (! is_writable ($indexpath)){
echo "ファイル: ".$indexpath." を書き込むことができません。プロパティを確認して再試行してください!" //エコーするように変更してください
}
if (!fwrite ($handle) ,$content) ){ //ファイルに情報を書き込みます
echo "Generate file".$indexpath."Failed!" //echo に変更します
}
fclose ($handle);
}
fclose ($fp);
die ("ページング ファイルの生成が完了しました。生成が不完全な場合は、ファイルのアクセス許可システムを確認して再生成してください。");一般的な考え方は次のとおりです。他のデータが生成される場合は、データの入出力チェック、ページング コンテンツのポインティングなどを必要に応じてページに追加できます。