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



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱酥网络

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值