1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. PHP構建監視服務的方法是什么

        時間:2020-11-23 18:49:59 PHP 我要投稿

        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構建監視服務的方法是什么】相關文章:

        1.php是什么

        2.PHP構建自定義搜索引擎的方法總結

        3.php在服務器執行exec命令失敗的解決方法-php技巧

        4.php是什么格式

        5.如何使用PHP構建一個高性能的彈幕后端服務

        6.php是什么型語言

        7.php是什么類型語言

        8.php是什么意思

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>