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。
相關文章
-
PHP構建監視服務的方法
PHP監視服務記錄程序應該能夠支持任意的服務檢查(例如,HTTP和FTP服務)並且能夠以任意方式(通過電子郵件,輸出到一個日誌文件,等等)記錄事件。你當然想讓它以一個守護程序方式運行;所以,你應該請求它輸出其完整的當前狀態 -
Php比Python方便原因是什麼
Python 腳本,由於自己的主業是 PHP 開發,所以在寫的過程中,會比較兩門語言,主要是看那個語言寫起來更方便更簡單,根據寫的腳本總結出如下的一些區別。 弱類型雖然PHP和Python在定義變量的時候不用指定變量類型,但 -
構建基於PHP的微博客服務
隨着人們對衛生健康越來越追求,人們洗澡的次數越來越多。南方人一般是一天洗一次。有些人會選擇在晚上的時候洗去一身疲憊之後睡覺,有些人是選擇在早上的時候洗澡讓自己清醒。那到底是要在早上洗澡呢還是在晚 -
php在服務器執行exec命令失敗的解決方法-php技巧
前言:本文針對windows php環境,linux系統不在討論範疇。出於安全的'原因,服務器是不允許php或者其他語言執行exec命令的,當你有特殊需要php在服務器執行exec命令時,你需要設置兩個地方,不然就無法執行成功。1、修改找到php -
什麼是PHP PHP與ASP比較
PHP 是一種 HTML 內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛的運用。以下是本站小編搜索整理的關於什麼是php?以及PHP與ASP比較,供參考閱讀,希望對大家有所幫助!想了解更 -
PHP5異常處理的方法是什麼
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現,而且支持幾乎所有流行的數據庫以及操作系統。最重要的是PHP可以用C、C++進行程序的擴展!以下是小編爲大家搜索整理的PHP5異常處理的方法是什麼,歡迎閱讀!更多精彩內容 -
PHP屏蔽關鍵字的方法是什麼
PHP是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。以下是小編爲大家搜索整理的屏蔽關鍵字的方法是什麼,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢 -
PHP數據庫連接的方法是什麼
PHP是一種 HTML 內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,被廣泛地運用。以下是小編爲大家搜索整理的PHP數據庫連接的方法是什麼,希望能給大家帶來幫助!更多經常內容請及時關 -
PHP是做什麼的 如何學習PHP
許多學PHP的人一直也搞不清楚,一個PHP程序員和Java程序員或者是程序員有什麼不同,告訴你,其實都一樣,沒有什麼不同。下面的內容,就是針對一個Java程序員掌握的技能對比PHP來說的!告訴你,它們其實是一樣的,不過是工具而已,沒有 -
php4和php5區別是什麼
導語:PHP4和PHP5,已經是兩個版本了。下面的是本站小編爲大家蒐集的php4和php5區別,供大家參考。PHP5 中的對象已經進行了較系統、較全面的調整,現在的樣子可能看起來會有些類似於 Java。本小節着重講述 PHP5 中新的對象模