WordPress技巧:只保留當天的網路日誌
阿新 • • 發佈:2018-12-23
之前有一篇文章《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:★★★★★