1、buffer的概念:
buffer其實就是乙個緩衝區,乙個記憶體位址空間,主要使用者儲存資料區域。
在php輸出語句的乙個流程是:內容--php buffer---tcp---終端
開啟php中的buffer:進入php.ini檔案中開啟「output_buffering = on」
例子:(獲取緩衝區中的資料)
<?php
echo '獲取緩衝區的資料;
//通過下面的函式獲取緩衝區的資料
echo ob_get_contents();
2、php如何實現頁面靜態化方法:
第一種:通過file_get_contents()函式
file_get_contents():將乙個字串寫入到檔案中。
file_get_contents(『index.shtml』, '字串資料');
第二種:使用php內建快取機制實現頁面靜態化:output_buffering
所常用的幾個函式:
ob_start : 開啟輸出控制緩衝(當php.ini檔案中output_buffering關閉的時候可以直接用這個函式來開啟)
ob_get_contents:返回輸出緩衝區的內容
ob_clean:清空輸出緩衝區的內容
ob_get_clean:得到當前緩衝區的內容,並刪除當前輸出緩衝區
3、實現純靜態化案例之步驟:
主要實際操作的乙個步驟是:從資料庫獲取資料-----然後把獲取到的資料填充到模板當中去(php動態頁面)---然後把動態的頁面轉化成靜態的頁面生成乙個純靜態檔案。
案例分析:
<?php
dataarray:資料庫所查出來資料(陣列形式)
ob_start(); //開啟緩衝區
//將資料庫獲取的資料填充到模板檔案當中--然後將模板檔案引入到當前頁面當中執行
require_once('/index.php');
if(file_put_contents('index.shtml', ob_get_clean()))
echo 'success';
}else
echo 'error';
上面的程式就會生成純靜態頁面:index.shtml
4、如何觸發系統生成純靜態化頁面:
三種方式:
第一:頁面新增快取時間
if(is_file("./index.shtml") && (time()-filemtime("./index.shtml"))<500)else
第二:手動觸發方式
第三:crontab定時掃瞄程式(在linux系統中定時的更新程式)
crontab定時掃瞄程式(linux下的乙個掃瞄工具):
例子:*/5****php /data/static/index.php
*/5****php:用星號分別代表五個時區:第乙個星代表分,後面的星依次代表時、日、月、周,很顯然現在代表每5分鐘執行 後面路徑下的php程式。
在linux下如何去設定上面這個命令呢?
首先切換到root用下輸入crontab -e進去編輯 寫入*/5****php /data/static/index.php
然後用tail -f /var/log/cron.log命令去檢視程式執行乙個日誌(檢視執行的過程)
5、區域性動態化案例實現:
利用ajax技術來實現:
$.ajax(,
'success' : function(result)
html = 』『;
//利用each函式進行遍歷
$.each(result.data, fuction(key,value)
html+= ..........這裡比如迴圈乙個li
//然後找到或者設定將要放入某個區中的id值
$("#a") . html(html);
})6、php處理偽靜態:
作用:美觀、利於收錄資料等。
處理方法兩種:
第一種:通過正則來匹配
首先在php中列印$_server這個全域性變數會看到乙個path_info,這裡面裝的就是網域名稱後面的位址了然後利用正則去匹配
preg_math("正則規則", $_server['path_info']);
第二種:通過配置apache中的rewrite從而達到url的乙個偽靜態
找到配置中的httpd_vhosts.conf進行配置
黃色區域是設定匹配規則的,在返回偽靜態的時候剛好指定的路徑的檔案裡面有個和這個偽靜態相同路徑的和相同名稱的檔案的時候,是執行這個偽靜態的檔案呢?還是 執行這個本身就存在的靜態檔案,這個時候如果開啟上面的兩行藍顏色的設定時只會返回這個事實存在的靜態檔案,否則反問偽靜態路徑的檔案。
PHP的相關知識點
獲取當前的資料型別用 gettype num 使用 is 資料型別 來判斷資料的型別。php的資料型別 布林型bool 整型integer 字串型string 浮點型float 物件object 陣列型別array 資源型別resourc 空值null。如果是字串輸出則使用單引號。陣列不能用於處理大...
相關知識點
nweb inf uclasses uweb.xml ulib n 從httpservlet 繼承,重寫doget dopost方法 n部署web.xml n 只有乙個物件 n 第一次請求的時候被初始化,只一遍 n 初始化後先呼叫init 方法,只一遍 n 每個請求,呼叫一遍service serv...
靜態路由知識點
1.路由協議的分類?靜態路由 動態路由 2.路由表的作用?決定裝置的三層資料報的 關係,目標網路能匹配路由表,從相應介面出發 若不能匹配路由表,則drop丟棄掉該資料報,不會像交換機那樣泛紅 廣播 3.選取最優路由的標準?子網掩碼長度最長的最優匹配 選取路由協議中優先順序最先匹配 4.靜態路由的優點...