首頁 php教程 php手册 简单的页面缓冲技术(二)

简单的页面缓冲技术(二)

Jun 21, 2016 am 09:10 AM
content filemtime quot tmpfile

页面

我的具体实现的例子
  为了帮助大家有个感性认识,这里我给出在我的主页上实现的基于文件处理的方法。只有主要的处理代码,不完整。

1 $tmpfile="../tmp/".basename($REQUEST_URI);
2 $tmpfile=str_replace("?", "_", $tmpfile);
3 $tmpfile=str_replace("&", "_", $tmpfile);
4 if(file_exists($tmpfile))
5 {
6 $cflag=false;
7 $dtmp=filemtime($tmpfile);
8 $itmp=filemtime($incfile);
9 $cflag=$cflag | ($dtmp 10 $ctmp=filemtime(basename($PHP_SELF));
11 $cflag=$cflag | ($dtmp 12 $ttmp=filemtime("template/content.ihtml");
13 $cflag=$cflag | ($dtmp 14 }
15 else
16 $cflag=true;
17
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.ihtml 模板文件
  |-docs/ 数据文件
  |-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行,输出结果。

  这就是我的处理,大家可以自行修改。

  缓冲是一项有意义的技术,可以提高访问速度,减少系统消耗。不过方法可能有多种多样,大家可以自由发挥。

本站注:看了这篇文章,竟发现本文作者的思路和本站的静态文章更新的实现原理是一样的。不同的是,本站的文章是每四天定期更新的。如果有兴趣的朋友可以通过页面下方的"view source"链接来查看具体实现的代码。如果有什么疑问和好的思想,欢迎到论坛共同讨论。



本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP函數介紹—filemtime(): 取得檔案的最後修改時間 PHP函數介紹—filemtime(): 取得檔案的最後修改時間 Jul 24, 2023 pm 05:41 PM

PHP函數介紹—filemtime():取得檔案的最後修改時間概述:在PHP中,filemtime()是一個非常常用的函數,用來取得檔案的最後修改時間。透過該函數,我們可以取得文件的最後修改時間戳,以便於對文件的操作和處理。本文將介紹filemtime()函數的使用方法,並提供程式碼範例,幫助讀者更好地理解並使用該函數。函數語法:intfilemtime

使用PHP函數 'filemtime' 傳回檔案的修改時間 使用PHP函數 'filemtime' 傳回檔案的修改時間 Jul 24, 2023 am 10:01 AM

PHP函數"filemtime"可以用來取得檔案的最後修改時間。它的使用非常簡單,只需傳入檔案路徑作為參數,函數將傳回一個時間戳,表示檔案的最後修改時間。接下來,我將為大家介紹如何使用這個函數以及一些程式碼範例。在PHP中,我們可以透過以下方式使用"filemtime"函數:$file_path='path/to/file.txt';//檔案路

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

PHP函數介紹:is_file()函數 PHP函數介紹:is_file()函數 Nov 04, 2023 am 09:11 AM

PHP函數介紹:is_file()函數在PHP程式設計中,is_file()函數是一個非常有用的函數。它用來判斷一個路徑或檔案是否存在,並且是一個普通的檔案。在本篇文章中,我們將介紹is_file()函數的使用方法,並提供一些具體的程式碼範例。首先,讓我們來看看is_file()函數的語法:boolis_file(string$filename)is_

PHP函數介紹—tmpfile(): 建立一個暫存文件 PHP函數介紹—tmpfile(): 建立一個暫存文件 Jul 25, 2023 pm 11:21 PM

PHP函數介紹—tmpfile():建立一個暫存檔案在PHP程式設計中,處理檔案是非常常見的操作。而在某些情況下,我們需要暫時建立一個檔案來進行某些處理,但又不希望長期保存這個檔案。這時候,就可以使用PHP的tmpfile()函數來建立一個暫存檔案。本文就為大家介紹一下tmpfile()函數的用法及相關注意事項。 tmpfile()函數是PHP檔案系統函數中的一

PHP建立一個暫存文件 PHP建立一個暫存文件 Mar 21, 2024 am 11:57 AM

這篇文章將為大家詳細講解有關PHP建立一個臨時文件,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。使用PHP建立暫存檔案簡介在某些情況下,php需要建立暫存檔案來儲存或處理資料。臨時文件是暫時儲存在系統檔案系統中的文件,通常在腳本執行後自動刪除。步驟1.建立一個暫存檔案句柄使用tmpfile()函數建立暫存檔案句柄。此函數傳回一個指向暫存檔案的流,可以用來寫入和讀取資料。 $file=tmpfile();2.寫入資料使用fwrite()函數寫入資料到暫存檔案。

CSS 內容屬性詳解:content、counter 與 quotes CSS 內容屬性詳解:content、counter 與 quotes Oct 21, 2023 am 10:16 AM

CSS內容屬性詳解:content、counter和quotesCSS(層疊樣式表)是前端開發中不可或缺的一部分,它可以幫助我們美化網頁並增強使用者體驗。在CSS中,有一些特殊的屬性可以用來控製文字內容的顯示,其中包括content、counter和quotes。本文將詳細介紹這些屬性,並提供具體的程式碼範例。一、content屬性content屬性

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 Jun 13, 2016 am 10:15 AM

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

See all articles