更新生成純靜態化頁面的三種方式:1.按照時間間隔更新。2.手動更新。3.定時更新(須要系統配合)。php
1. 按照時間間隔更新。linux
當用戶第一次訪問這個頁面的時候,程序自動判斷,該靜態文件是否存在,而且該文件是否還在有效時間內,若是該文件未超出了有效時間,用戶訪問的是已經生成的靜態文件。若是超出了有效時間,用戶獲得的是動態輸出的內容,同時從新生成靜態文件。稍微修改一下昨天的代碼爲例:數據庫
<?php //首先判斷是否有靜態文件,而且文件的最新修改時間到如今是否大於20秒 if(is_file('./text.php') && time()-filemtime('./text.php') <= 20){ //條件成立,將已經生成的靜態文件輸出給用戶 include_once('./text.php'); }else{ //條件不成立,從新走數據庫,獲取數據,分配模板,輸出內容 $arr = array( 0=>array('title'=>'這裏是第一個標題'), 1=>array('title'=>'這裏是第二個標題'), 2=>array('title'=>'這裏是第三個標題'), 3=>array('title'=>date('Y-m-d H:i:s')) ); //緩衝區必需要在輸出以前開啓 ob_start(); //輸出模板 include_once('./template.php'); //輸出內容的同時生成靜態文件,注意使用的函數是ob_get_contents(); file_put_contents('./text.php', ob_get_contents()); /* if(file_put_contents('./text.php', ob_get_contents()){ echo 'success'; }else{ echo 'error'; } */ } ?>
2.手動更新靜態文件數組
這個超級簡單,作一個按鈕,給它一個<a>標籤,連接到這個腳本便可,點擊一下按鈕,生成一個最新的靜態文件,邏輯代碼和昨天寫的如出一轍,爲了閱讀方便,我仍是把昨天的代碼複製一份兒過來吧。函數
<?php //按照常規套路的話,這個數組應該是從數據庫中拿到的 //這裏爲了簡便就直接準備一個二位數組 $arr = array( 0=>array('title'=>'這裏是第一個標題'), 1=>array('title'=>'這裏是第二個標題'), 2=>array('title'=>'這裏是第三個標題') ); //緩衝區必需要在輸出以前開啓 ob_start(); //把模板文件引入 include_once('./template.php'); //從緩衝區拿到文件,寫到本地保存起來 if(file_put_contents('./text.php', ob_get_clean())){ echo 'success'; }else{ echo 'error'; } ?>
3.定時更新(這個須要藉助linux系統)spa
命令行 crontab -e 編輯 crontab命令行
*/1 * * * * php /index.php 每一分鐘執行一次index.php腳本日誌
五個*分別表示:分 時 日 月 周code
查看crontab日誌能夠查詢是否生成靜態文件。命令: tail -f /var/log/cron.log
crontab