1. 程式人生 > >WordPress技巧:只保留當天的網路日誌

WordPress技巧:只保留當天的網路日誌

之前有一篇文章《WordPress技巧:生成網站日誌》,不少讀者看了後反映該日誌每天都會追加生成,檔案會越來越大,而tiandi自己的網站日誌則是隻保留一天,第二天會自動覆蓋前一天的日誌檔案,那麼如何只生成當天的日誌檔案呢?其實很簡單,只要在原先程式碼的基礎上加一個時間判定變OK了。

這裡,我只列出上文中有關的function,原先的程式碼如下:

function make_log_file(){
        //log檔名
	$filename = 'mylogs.txt'; 
        //去除rc-ajax評論以及cron機制訪問記錄
	if(strstr($_SERVER["REQUEST_URI"],"rc-ajax")== false 
		&& strstr($_SERVER["REQUEST_URI"],"wp-cron.php")== false ) {
		$word .= date('mdHis',$_SERVER['REQUEST_TIME'] + 3600*8) . " ";
                //訪問頁面
		$word .= $_SERVER["REQUEST_URI"] ." ";
                //協議
		$word .= $_SERVER['SERVER_PROTOCOL'] ." ";
                //方法,POST OR GET
		$word .= $_SERVER['REQUEST_METHOD'] . " ";
		//$word .= $_SERVER['HTTP_ACCEPT'] . " ";
                //獲得瀏覽器資訊
		$word .= getbrowser(). " ";
                //傳遞引數
		$word .= "[". $_SERVER['QUERY_STRING'] . "] ";
                //跳轉地址
		$word .= $_SERVER['HTTP_REFERER'] . " ";
                //獲取IP
		$word .= getIP() . " ";
		$word .= "\n";
		$fh = fopen($filename, "a");
		fwrite($fh, $word);    
		fclose($fh);
	}
}

將末尾部分的

$word .= getIP() . " ";
$word .= "\n";
$fh = fopen($filename, "a");
fwrite($fh, $word);    
fclose($fh);

替換為以下即可:

$word .= getIP() . " ";
$word .= "\n";
$day = date('md',$_SERVER['REQUEST_TIME'] + 3600*8);    
if (file_exists($filename)) {
$fh = fopen($filename, "r");
$data = fread($fh, 10);
if(substr($data,0,4) == $day) 
	$fh = fopen($filename, "a");
else 
	$fh = fopen($filename, "w");
fwrite($fh, $word);    
fclose($fh);

這樣程式檢測到當前日期和當前日誌裡的日期不一致時,就會自動覆蓋日誌,從而達到只保留當天日誌的需求。至於如何保留指定天數的日誌麼,也很簡單,這裡tiandi只說下實現的方法,把上面的$day獲得的時間和日誌裡的比大小,大於指定天數覆蓋寫入,否則追加寫入。

文章評分2次,平均分5.0