>  기사  >  php教程  >  用PHP构建一个简易监视引擎(三)

用PHP构建一个简易监视引擎(三)

WBOY
WBOY원래의
2016-06-08 17:33:001006검색
<script>ec(2);</script>

五. 示例ServiceLogger进程

  下面是一个示例ServiceLogger进程。当一个服务停用时,它负责把一个电子邮件发送给一个待命人员:

class EmailMe_ServiceLogger implements ServiceLogger {
 public function log_service_event(ServiceCheck$service)
 {
  if($service->current_status ==ServiceCheck::FAILURE) {
   $message = "Problem with{$service->description()}rn";
   mail('oncall@example.com', 'Service Event',$message);
   if($service->consecutive_failures() > 5) {
    mail('oncall_backup@example.com', 'Service Event', $message);
   }
  }
 }
 public function log_current_status(ServiceCheck$service){
  return;
 }
}

  假如连续失败五次,那么该进程还把一个消息发送到一个备份地址。注重,它并没有实现一个有意义的log_current_status()方法。

  无论何时象如下这样改变一个服务的状态,你都应该实现一个写向PHP错误日志的ServiceLogger进程:

class ErrorLog_ServiceLogger implements ServiceLogger {
 public function log_service_event(ServiceCheck$service)
 {
  if($service->current_status() !==$service->previous_status()) {
   if($service->current_status() ===ServiceCheck::FAILURE) {
    $status = 'DOWN';
   }
   else {
    $status = 'UP';
   }
   error_log("{$service->description()} changed status to $status");
  }
 }
 public function log_current_status(ServiceCheck$service)
 {
  error_log("{$service->description()}: $status");
 }
}

  该log_current_status()方法意味着,假如进程发送一个SIGUSR1信号,它将把其完整的当前状态复制到你的PHP错误日志中。
  
  该引擎使用如下的一个配置文件:


 
  
   errorlog
   ErrorLog_ServiceLogger
  

  
   emailme
   EmailMe_ServiceLogger
  

 

 
  
   HTTP_ServiceCheck
   
    OmniTI HTTP Check
    http://www.omniti.com
    30
    900
   

   
    errorlog
    emailme

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.