日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP 静态缓存 OB系列函数

發布時間:2023/12/31 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP 静态缓存 OB系列函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
摘要:: 靜態化:
靜態化是解決減輕網站壓力,提高網站訪問速度的常用方案.包括:純靜態和偽靜態。
純靜態:
將PHP程序生成靜態的HTML文件,保存到服務器的磁盤中。
原理:
在用戶訪問PHP程序時,首先檢測靜態的HTML文件是否存在,如果存在直接輸出靜態文件,如果靜態文件不存在,查詢數據庫,生成靜態文件,并輸出。
優勢:
減少PHP程序編譯和對數據庫的查詢。
數據緩沖區:
數據緩沖區是用戶前端用來存儲、操縱數據的對象。


OB系列函數::

  • ob_start()函數:打開輸出緩沖區
說明:當緩沖區激活時,所有來自PHP程序的非文件頭信息均不會發送,而是保存在內部緩沖區。為了輸出緩沖區的內容,可以使用ob_end_flush()或flush()輸出緩沖區的內容。

  • Flush():刷新緩沖區的內容,輸出
說明:這個函數經常使用,效率很高。
  • ob_flush沖刷出(送出)輸出緩沖區中的內容
說明:這個函數將送出緩沖區的內容(如果里邊有內容的話)。如果想進一步處理緩沖區中的內容,必須在ob_flush()之前調用ob_get_contents() ,因為在調用ob_flush()之后緩沖區內容將被丟棄。 此函數不會銷毀輸出緩沖區,而像ob_end_flush() 函數會銷毀緩沖區。
  • ob_get_contents :返回內部緩沖區的內容
說明:這個函數會返回當前緩沖區中的內容,如果輸出緩沖區沒有激活,則返回 FALSE.
  • ob_end_flush: 發送內部緩沖區的內容到瀏覽器,并且關閉輸出緩沖區
說明:這個函數發送輸出緩沖區的內容(如果有的話)
  • ob_implicit_flush:打開或關閉絕對刷新
說明:默認為關閉緩沖區,打開絕對輸出后,每個腳本輸出都直接發送到瀏覽器,不再需要調用 flush()
  • ob_clean:清空(擦掉)輸出緩沖區說明:此函數用來丟棄輸出緩沖區中的內容。 此函數不會銷毀輸出緩沖區,而像 ob_end_clean() 函數會銷毀輸出緩沖區。
  • ob_end_clean:刪除內部緩沖區的內容,并且關閉內部緩沖區
說明:這個函數不會輸出內部緩沖區的內容而是把它刪除
  • ob_get_length:返回內部緩沖區的長度
說明:這個函數會返回當前緩沖區中的長度;和ob_get_contents一樣,如果輸出緩沖區沒有激活,則返回 FALSE.

靜態緩存簡單應用:: //在要做靜態緩存的頁面,我們定義一個變量來存放一個緩存文件的路徑(相對于當前頁面的路徑) $filename="scoreSearch.html"; //定義一個變量來存儲緩存過期時間 $endTime = 10; //判斷一下,緩存文件是否存在或者是否過期,如果緩存文件不存在就執行源代碼生成緩存,或者時間過期了也應該重新緩存一下,如果上述條件不滿足則調用緩存頁面顯示 if(!file_exists($filename) || filemtime($filename)+$cachetime<time()) {//緩存頁面代碼 } else {include($filename);//如果存在,調用緩存文件或者echo file_get_contents($filename);//取出文件內容并輸出 }//生成緩存,在頁面輸出內容之前,我們調用ob_start()方法打開內存緩沖區,將要輸出的內容放到內存里面 ob_start();//輸出將要緩存的內容 echo "######################################"; //在頁面輸出完之后,將內存中獲取到的內容保存下來,存為一個靜態頁面 //從內存緩存中獲取頁面代碼 $content = ob_get_contents();//將獲取到的內容存放到緩存文件 file_put_contents($filename,$content);//清掉內存緩存 ob_flush();//最后我們加上一段輸出,來測試是否重新緩存了,如果頁面有輸出該內容代表重新生成了緩存文件,如果沒有,說明是直接讀的緩存文件 echo 123; //測試是否調用了緩存文件,緩存文件不輸出這句話

這樣我們就簡單做了一個靜態緩存,完整代碼如下::<?php //查詢是否有緩存文件 $filename="scoreSearch.html"; $endTime = 10; if(!file_exists($filename) || time()-filemtime($filename) > $endTime){ob_start(); //啟動ob緩存echo "<html><a href='#'>aa</a></html>";$ob_str = ob_get_contents(); //返回輸出緩沖區的內容$file = fopen($filename,'w') or die("Unable to open file!"); //打開文件或者 URL('w'參數:如果文件不存在則嘗試創建之)fwrite($file,$ob_str); //寫入文件fclose($file); //關閉一個已打開的文件指針ob_flush(); }else {echo file_get_contents($filename); } ?>
把代碼運行到linux 中的靜態緩存? ?注意::: ? ??

linux 中? ?需要? 開啟? ?權限? ?\html? ?

????在Linux中,權限的所有者分為用戶權限,組權限和其他權限

? ? ?權限分為:讀 r , 寫 w , 執行 x.

????權限都可以用數字來表示:r 4, w 2 , x 1,?

? ? 代碼如下:

????????? ??chmod -R 777 某文件夾.

?????????????(對文件夾進行權限修改而不是對某個文件,原因是我們在對當前文件夾進行寫入操作)








總結

以上是生活随笔為你收集整理的PHP 静态缓存 OB系列函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。