查看内容

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

  • 2020-05-07 12:42
  • 编程人生
  • Views

五. 示例ServiceLogger进程 下面是一个示例ServiceLogger进程。当一个服务停用时,它负责把一个电子邮件发送给一个待命人员:class EmailMe_ServiceLogger implements ServiceLogger { public function log_service_澳门太阳集团2007手机版,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错误日志中。 该引擎使用如下的一个配置文件:config loggers logger iderrorlog/id classErrorLog_ServiceLogger/class /logger logger idemailme/id classEmailMe_ServiceLogger/class /logger /loggers services service classHTTP_ServiceCheck/class params descriptionOmniTI HTTP Check/description url timeout30/timeout frequency900/frequency /params loggers loggererrorlog/logger loggeremailme/logger

上一篇:文件安装程序三 下一篇:php的缓存类