php之框架增加日誌記錄功能類
<?php
/*
思路:給定文件,寫入讀取(fopen ,fwrite……)
如果大於1M 則重寫備份
傳給一個內容,
判斷大小,如果大於1M,備份
小於則寫入
*/
class Log{
//定義一個常量,創建一個文件的名稱
const LOGFILE = 'curr.log';
//寫入文件
public static function write($cont){
$cont .="\r\n";
$log = self::isBak(); //計算文件的地址,判斷大小
$fh = fopen($log,'ab'); //打開,追加模式
fwrite($fh,$cont);
fclose($fh);
}
//備份日誌
public static function bak(){
//給出寫入文件的路徑,把原來的日誌
//改為年月日 .bak 的形式
$log = ROOT .'data/log/'. self::LOGFILE;
$bak = ROOT .'data/log/'.date('Ymd') .mt_rand(10000,99999). '.bak';
return rename($log,$bak);
}
//判斷日誌是否大於1M
public static function isBak(){
//判斷文件是否存在
$log = ROOT .'data/log/'. self::LOGFILE;
if(!file_exists($log)){
//如果不存在,則創建該文件
touch($log); // touch在linux也有此命令,是快速的建立一個文件
return $log;
}
//判斷大小
clearstatcache(true,$log); //清除緩存,則創建.bak文件
$size = filesize($log);
if($size <= 1024*1024){
//如果<=1M 則寫入
return $log;
}
//到這一行,說明大於1M
if(!self::bak()){
return $log;
} else {
touch($log);
return $log;
}
}
}
?>
極端法測試調用,循環執行10000次
//另起頁麵
//引入日誌功能類
class mysql{
public function query($sql){
Log::write($sql);
}
}
$mysql= new mysql();
/**/
for($i=0;$i<10000;$i++){
$sql='select goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goodsselect goods_id,goods_name,shop_price from goods where goods_id='.rand(10000,99999);
$mysql->query($sql);
}
Log::write('記錄');
echo "執行完畢";

最後更新:2017-04-02 22:15:57