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之框架增加日志记录功能类的更多相关文章
- HAproxy增加日志记录功能和自定义日志输出内容、格式
http://blog.51cto.com/eric1/1854574 一.增加haproxy日志记录功能 1.1 由于数据分析的需要,我们必须打开haproxy日志,记录相关信息. 在配置前,我 ...
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- C# 日志记录工具类--LogHelper.cs测试
C# 日志记录工具类:(适用于不想使用log4j等第三方的Log工具的时候,希望自己写个简单类实现)LogHelper.cs内容如下: using System; using System.Diagn ...
- 如何自行给指定的SAP OData服务添加自定义日志记录功能
有的时候,SAP标准的OData实现或者相关的工具没有提供我们想记录的日志功能,此时可以利用SAP系统强大的扩展特性,进行自定义日志功能的二次开发. 以SAP CRM Fiori应用"My ...
- LogHelper 日志记录帮助类
1.LogHelper 日志记录帮助类 using System; using System.Collections.Generic; using System.Linq; using System. ...
- 在SpringBoot中用SpringAOP实现日志记录功能
背景: 我需要在一个SpringBoot的项目中的每个controller加入一个日志记录,记录关于请求的一些信息. 代码类似于: logger.info(request.getRequestUrl( ...
- tp5下通过composer实现日志记录功能
tp5实现日志记录 1.安装 psr/log composer require psr/log 它的作用就是提供一套接口,实现正常的日志功能! 我们可以来细细的分析一下,LoggerInterface ...
随机推荐
- [转]C语言单引号和双引号的区别
单引号和双引号在C中的意义完全不同,包围在单引号中的一个字符只是编写整数的另一种方法.这个整数是给定的字符在实现的对照序列中的一个对应的值,即ASCII码值.因此在一个ASCII实现中,‘a’和014 ...
- hdu 4474 大整数取模+bfs
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4474 (a*10+b)%c = ((a%c)*10+b%c)%c; 然后从高位开始枚举能填的数字填充, ...
- Install Asterisk 11 on Ubuntu 12.04 LTS
http://blogs.digium.com/2012/11/14/how-to-install-asterisk-11-on-ubuntu-12-4-lts/ Last week I put up ...
- 分布式系统里session同步的那些事儿
几周前,有个盆友问老王,说现在有多台服务器,怎么样来解决这些服务器间的session同步问题?老王一下就来精神了,因为在n年以前,老王还在学校和几个同学一起所谓创业的时候,也遇到了类似的问题.当时查了 ...
- IAAS云计算产品畅想-云主机的产品定位
要研究某个产品的定位,就要先研究一下这个产品进入市场以后会影响了谁,被影响的产品产业,就是你的定位环境. 现例举一下公有云iaas服务影响了谁(按重要程度顺序): 1.企业IT 2.设备厂商 3.数据 ...
- ImageView 缩放
<ImageView android:id="@+id/imageview" android:layout_width="wrap_content" an ...
- 使用DBOutputFormat把MapReduce产生的结果集导入到mysql中
数据在HDFS和关系型数据库之间的迁移,主要有以下两种方式 1.按照数据库要求的文件格式生成文件,然后由数据库提供的导入工具进行导入 2.采用JDBC的方式进行导入 MapReduce默认提供了DBI ...
- iOS-系统定位功能
ios系统定位 前期准备 系统定位功能,需要用到框架:CoreLocation/CoreLocation.h, 然后导入文件#import <CoreLocation/CoreLocation. ...
- [转] What is the point of redux when using react?
As I am sure you have heard a bunch of times, by now, React is the V in MVC. I think you can think o ...
- linux系统时间同步更新
linux中的时钟分为系统时钟和硬件时钟.硬件时钟通过bioss进行设置,系统时钟通过linux kernel进行设置.当linux启动时,bioss会读取系统时钟的时钟设置.在linux中涉及时间设 ...