一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

PHP简单实现定时监控nginx日志文件功能示例

时间:2022-06-24 15:40:40 编辑:袖梨 来源:一聚教程网

本文实例讲述了PHP简单实现定时监控nginx日志文件功能。分享给大家供大家参考,具体如下:

此功能是为了实现,定时监控nginx生成的日志数据,并将新增的数据提交到一个接口(比如大数据的接口,让大数据来进行分析)

define("MAX_SHOW", 8192*5); //新增数据提交阈值
define("LOG_NAME", ""); //读取的日志文件
define("LOG_SIZE", ""); //保留上次读取的位置
define("LOG_URL", ""); //日志提交地址
//运行时log文件原始大小
$log_size    = get_filesize();
$file_size     = filesize(LOG_NAME);
if(empty($log_size)){//没有记录上次位置,则从当前位置开始
  $file_size = $file_size;
}else if($log_size > $file_size){ //说明是第二天的日志文件,指针放到文件头
  $file_size = 0;
}else{ //从上次记录的位置开始
  $file_size = $log_size;
}
$file_size_new   = 0;
$add_size     = 0;
$ignore_size   = 0;
$fp = fopen(LOG_NAME, "r");
while(1){
  clearstatcache();
  $read_num = 0;
  $file_size_new = filesize(LOG_NAME);
  $add_size = $file_size_new - $file_size;
  $add_data = array();
  $add_log = '';
  if($add_size > 0){
    //大于一个阈值提交数据
    if($add_size > MAX_SHOW){
      fseek($fp, $file_size);
      //当增加量超过8192,需要分页读取增加量
      $page = ceil($add_size/8192);
      for($i=1; $i

备注:由于日志文件过了凌晨会切割,所以需要做一下判断,判断是第二天的日志需要从日志文件头部进行读取

需要优化的逻辑:当中间进程挂了,停了一段时间,再启动时,从上次的位置重新读取,提交的数据会比较大,可能会超过提交数据大小的限制

热门栏目