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 "执行完毕";

php之框架增加日志记录功能类

 

上一篇:Cookie的基本使用


下一篇:php之文件上传简单介绍