ホームページ >php教程 >php手册 >簡易ページバッファリング技術(2)

簡易ページバッファリング技術(2)

WBOY
WBOYオリジナル
2016-06-21 09:10:121042ブラウズ

ページ

私の具体的な実装例
皆様の感覚的な理解を助けるために、私のホームページで実装したファイルベースの処理方法をここに示します。メイン処理コードのみで不完全です。
1 $tmpfile="../tmp/".basename($REQUEST_URI);
2 $tmpfile=str_replace("?", "_", $tmpfile); &", "_", $tmpfile);
4 if(file_exists($tmpfile))
5 {
6 $cflag=false;
7 $dtmp=filemtime($tmpfile);
8 $itmp=filemtime($ incfile);
9 $cflag=$cflag | ($dtmp < $itmp);
10 $ctmp=filemtime($PHP_SELF); ($dtmp < $ctmp) ; 12 $ttmp=filemtime("template/content.ihtml"); 13 $cflag=$cflag | ($dtmp < $ttmp); 15 else 16 $cflag=true; 18 if(!$cflag) //既存のファイルを使用します
19 {
20 readfile($tmpfile);
21 exit;
22 }
23
24 // 新しいファイルを作成します
25 include "template.class.php3";
26
27 $fp=fopen($incfile, "r");
28 $content=fread($fp, filesize($incfile));
29 fclose($fp);
30
31 // テンプレートの処理以下で実行されます
32 $t = new Template("template", "keep");
33
34 $t->set_file("contentfile","content.ihtml");
35
36 $t- > ;set_var(
37 array(
38 "content"=>$content
39 ));
40
41 $t->parse("outputcontent","contentfile");
42
43 $fp= fopen ($tmpfile, "w");
44 if($fp)
45 {
46 flock($fp, 3)
47 fwrite($fp, $t->get_var("outputcontent"); 48 flock($fp, 1);
49 fclose($fp);
50 }
51 $t->p("outputcontent")


まず、私のディレクトリを紹介します。構造:

/---bin/ 実行プログラムディレクトリ
|--content.php3 ファイル表示処理に使用するプログラム
|--template/ テンプレートファイルを格納するディレクトリ
| ---content. file
|-docs/ data file
|-tmp/ バッファファイルを格納します

content.php3 ファイルは動的ページの処理に使用されます。ユーザーは、content.php3?page=id 番号を通じてデータ ファイルを読み取ることができます。各データ ファイルに異なる ID 番号があることがわかっていれば、メソッド content.php3?page=id 番号によってデータ ファイルを一意に識別できます。

1 ~ 3 行目、一時ファイル名を生成します。 「?」、「&」、およびその他の文字を「_」に置き換えます。
4 行目、一時ファイル名が存在するかどうかを確認し、存在する場合は 18 ~ 22 行目を実行して終了します。
6行目から13行目は、動的ページの生成に関連するファイル変更時刻と一時ファイルが更新されたかどうかを判断し、再生成フラグを設定します。ここで filemtime() を使用して、最終変更時刻を取得します。
24 行目から 41 行目では、テンプレート クラスを使用して動的な結果を生成し、それらを変数に配置します。テンプレートの加工については「テンプレート、PHPLIBの加工方法」の記事を参照してください。
43 ~ 50 行目、一時ファイルを生成します。書き込みの競合を防ぐために、ファイルはここでロックされます。
51行目、結果を出力します。

これは私が対処した方法です。ご自身で変更することもできます。

バッファリングは、アクセス速度を向上させ、システム消費量を削減できる有意義なテクノロジーです。ただし、方法はたくさんあり、誰もが自由に使用できます。

このサイトからの注: この記事を読んで、著者の考えがこのサイトの静的記事更新の実装原則と同じであることがわかりました。違いは、このサイトの記事は 4 日ごとに定期的に更新されることです。ご興味がございましたら、ページ下部の「ソースを表示」リンクから特定の実装コードをご覧ください。ご質問や良いアイデアがある場合は、フォーラムに参加して一緒に話し合ってください。









声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。