欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

分享PHP開發(fā)簡(jiǎn)單實(shí)現(xiàn)定時(shí)監(jiān)控nginx日志文件功能示例

2018-06-29 14:06:47 1687瀏覽

今天扣丁學(xué)堂小編給大家整理了一下關(guān)于PHP培訓(xùn)班實(shí)例講述了PHP簡(jiǎn)單實(shí)現(xiàn)定時(shí)監(jiān)控nginx日志文件功能。分享給大家供大家參考,具體如下:



此功能是為了實(shí)現(xiàn),定時(shí)監(jiān)控nginx生成的日志數(shù)據(jù),并將新增的數(shù)據(jù)提交到一個(gè)接口(比如大數(shù)據(jù)的接口,讓大數(shù)據(jù)來(lái)進(jìn)行分析)

  define("MAX_SHOW",8192*5);//新增數(shù)據(jù)提交閾值
  define("LOG_NAME","");//讀取的日志文件
  define("LOG_SIZE","");//保留上次讀取的位置
  define("LOG_URL","");//日志提交地址
  //運(yùn)行時(shí)log文件原始大小
  $log_size=get_filesize();
  $file_size=filesize(LOG_NAME);
  if(empty($log_size)){//沒(méi)有記錄上次位置,則從當(dāng)前位置開始
  $file_size=$file_size;
  }elseif($log_size>$file_size){//說(shuō)明是第二天的日志文件,指針?lè)诺轿募^
  $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){
  //大于一個(gè)閾值提交數(shù)據(jù)
  if($add_size>MAX_SHOW){
  fseek($fp,$file_size);
  //當(dāng)增加量超過(guò)8192,需要分頁(yè)讀取增加量
  $page=ceil($add_size/8192);
  for($i=1;$i<=$page;$i++){
  if($i==$page){//最后一頁(yè)
  $end_add=$add_size-($page-1)*8192;
  $add_log.=fread($fp,$end_add);
  }else{
  $add_log.=fread($fp,8192);
  $file_size_step=$file_size+$i*8192;
  fseek($fp,$file_size_step);
  }
  }
  $add_data['add_log']=$add_log;
  $add_data['add_log']=base64_encode($add_data['add_log']);
  http_post(LOG_URL,$add_data);
  $file_size=$file_size_new;
  //記錄當(dāng)前位置
  save_filesize($file_size);
  }
  }elseif($add_size<0){//第二天從頭部開始
  $file_size=0;
  }
  sleep(2);
  }
  fclose($fp);
  /**
  *每次啟動(dòng)時(shí)獲取上次打開文件位置
  */
  functionget_filesize(){
  $size=file_get_contents(LOG_SIZE);
  return$size;
  }
  /**
  *每次提交后保存這次讀取文件的位置
  */
  functionsave_filesize($size){
  returnfile_put_contents(LOG_SIZE,$size);
  }
  /**
  *http請(qǐng)求
  *@paramarray$data
  *@returnboolean
  */
  functionhttp_post($url='',$data=array())
  {
  if(empty($url)){
  returnFALSE;
  }
  if($data){
  $data=http_build_query($data);
  }
  $ch=curl_init();
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_POST,1);
  curl_setopt($ch,CURLOPT_HEADER,0);
  curl_setopt($ch,CURLOPT_TIMEOUT,5);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
  $return=curl_exec($ch);
  curl_close($ch);
  return$return;
  }

備注:由于日志文件過(guò)了凌晨會(huì)切割,所以需要做一下判斷,判斷是第二天的日志需要從日志文件頭部進(jìn)行讀取需要優(yōu)化的邏輯:當(dāng)中間進(jìn)程掛了,停了一段時(shí)間,再啟動(dòng)時(shí),從上次的位置重新讀取,提交的數(shù)據(jù)會(huì)比較大,可能會(huì)超過(guò)提交數(shù)據(jù)大小的限制。

最后想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢,扣丁學(xué)堂是專業(yè)的PHP培訓(xùn)機(jī)構(gòu),扣丁學(xué)堂不僅有專業(yè)的老師和與時(shí)俱進(jìn)的課程體系,還有大量的PHP視頻教程供學(xué)員觀看學(xué)習(xí),喜歡PHP的小伙伴快快行動(dòng)吧。扣丁學(xué)堂PHP技術(shù)交流群:374332265。

扣丁學(xué)堂微信公眾號(hào)



【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】



查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>

標(biāo)簽: PHP培訓(xùn) PHP視頻教程 PHP從入門到精通 PHP學(xué)習(xí)路線圖 PHP開發(fā)工程師

熱門專區(qū)

暫無(wú)熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部