PHP构建监视服务的方法是什么
【提要】本篇《PHP构建监视服务的方法》特别为需要方法编程学习的朋友收集整理的,仅供参考。内容如下:
PHP监视服务记录程序应该能够支持任意的服务检查(例如,HTTP和FTP服务)并且能够以任意方式(通过电子邮件,输出到一个日志文件,等等)记录事件。你当然想让它以一个守护程序方式运行;所以,你应该请求它输出其完整的当前状态。以下是小编为大家搜索整理的PHP构建监视服务的方法,希望能给大家带来帮助!
一个服务需要实现下列抽象类:
abstract class ServiceCheck {
const FAILURE = 0;
const SUCCESS = 1;
protected $timeout = 30;
protected $next_attempt;
protected $current_status = ServiceCheck::SUCCESS;
protected $previous_status = ServiceCheck::SUCCESS;
protected $frequency = 30;
protected $description;
protected $consecutive_failures = 0;
protected $status_time;
protected $failure_time;
protected $loggers = array();
abstract public function __construct($params);
public function __call($name, $args)
{
if(isset($this->$name)) {
return $this->$name;
}
}
public function set_next_attempt()
{
$this->next_attempt = time() + $this->frequency;
}
public abstract function run();
public function post_run($status)
{
if($status !== $this->current_status) {
$this->previous_status = $this->current_status;
}
if($status === self::FAILURE) {
if( $this->current_status === self::FAILURE ) {
$this->consecutive_failures++;
}
else {
$this->failure_time = time();
}
}
else {
$this->consecutive_failures = 0;
}
$this->status_time = time();
$this->current_status = $status;
$this->log_service_event();
}
public function log_current_status()
{
foreach($this->loggers as $logger) {
$logger->log_current_status($this);
}
}
private function log_service_event()
{
foreach($this->loggers as $logger) {
$logger->log_service_event($this);
}
}
public function register_logger(ServiceLogger $logger)
{
$this->loggers[] = $logger;
}
}
上面的__call()重载方法提供对一个ServiceCheck对象的'参数的只读存取操作:
· timeout-在引擎终止检查之前,这一检查能够挂起多长时间。
· next_attempt-下次尝试连接到服务器的时间。
· current_status-服务的当前状态:SUCCESS或FAILURE。
· previous_status-当前状态之前的状态。
· frequency-每隔多长时间检查一次服务。
· description-服务描述。
· consecutive_failures-自从上次成功以来,服务检查连续失
败的次数。
· status_time-服务被检查的最后时间。
· failure_time-如果状态为FAILED,则它代表发生失败的时间。
这个类还实现了观察者模式,允许ServiceLogger类型的对象注册自身,然后当调用log_current_status()或log_service_event()时调用它。
这里实现的关键函数是run(),它负责定义应该怎样执行检查。如果检查成功,它应该返回SUCCESS;否则返回FAILURE。
-
word2010的相关操作介绍
设置word2010中图片的裁减在word2010中,用户可以随意对已经插入的图片或对象进行裁减。操作如下:1.请先选择要缩放或设置大小的图片,这时功能区会自动出现“图片工具”。2.在“图片工具”的“格式”选项卡的“大小”组中点击“裁减”,然后进行以下操作之一:●点击“...
-
厨房装修要注意哪些问题
厨房是家庭装修非常大的一个环节,关乎到水电燃气等各项安全问题,也关乎到以后的生活饮食的.健康问题,所以厨房装修显得尤为重要。今天小编为您介绍一下厨房装修需要注意哪些问题,为你家里装修厨房时多一个参考。一、厨房装修选材1、选材要防水厨房是我们每天洗菜做...
-
word安全模式修复方法
word安全模式修复今天启动Word时,弹出如下提示:“MicrosoftOfficeWord遇到问题需要关闭。我们对此引起的不便表示抱歉遇到问题需要关闭。您正在处理的信息有可能丢失。MicrosoftOfficeWord可以尝试为您恢复。恢复我的工作并重启MicrosoftOfficeWord。请将此问题...
-
互联网与实体经济的关联探讨
实体经济是指人通过思想使用工具在地球上创造的经济。互联网是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。那么这两者又有何关联呢?格力电器的董事长董明珠曾在演讲中说道:“没有实体经济的支撑,互联网就是死...