zoukankan      html  css  js  c++  java
  • php之框架增加日志记录功能类

    <?php
    
    /*
    思路:给定文件,写入读取(fopen ,fwrite……)
    
      如果大于1M 则重写备份
      
      传给一个内容,
      判断大小,如果大于1M,备份
      小于则写入
    */
    class Log{
    
    	//定义一个常量,创建一个文件的名称
    	const LOGFILE = 'curr.log';
    	
    	//写入文件
    	public static function write($cont){
    		$cont .="
    ";
    		$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 "执行完毕";

  • 相关阅读:
    Altium Designer 快捷键,长期更新
    代码: 0x80131500:应用商店崩溃怎么修复
    (转)stm32cubeMx配置使用encoder编码器
    STM32 PWM注意事项
    转载 STM32 使用Cubemx 建一个USB(HID)设备下位机,实现数据收发
    STM32Cube填坑,ST link 下载一次以后无法下载
    SuperSocket 学习笔记-客户端
    python-kaggle之旅
    Leetcode刷题记(9)——移除元素
    Leetcode刷题记(8)——删除排序数组中的重复项
  • 原文地址:https://www.cnblogs.com/wang1204/p/5570011.html
Copyright © 2011-2022 走看看