Профессиональное программирование на PHP

Страница 149 из 591


154 Глава 5 Реализация средствами РНР: автономные сценарии

Если служба отключена в течение пяти проверок, то процесс также отправляет сообщение на резервный адрес. В данном процессе не реализован выразительный методlog_current_status().

Ниже приведена реализация процесса 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()} изменила состояние на $status"); }

}

public function log_current_status(ServiceCheck $service) {

error_log("{$service-description()}: $status");

} }

Метод log_current_status () означает, что, если процессу отправляется сигнал SIGUSR1, полное текущее состояние записывается в журнал ошибок РНР. Ядро принимает конфигурационный файл, подобный приведенному ниже.

<config> <loggers> <logger>

<id>errorlog</id>

<class>ErrorLog_ServiceLogger</class> </logger> <logger>

<id>emailme</id>

<class>EmailMe_ServiceLogger</class> </logger> </loggers> <services> <service>

<class>HTTP_ServiceCheck</class> <params>

<description>OmniTI HTTP Check</description>

<url>http://www.omniti.com</url>

<timeout>3 0</timeout>

< frequency> 9 00</frequency> </params> <loggers>

<logger>errorlog</logger>

<logger>emailme</logger> </loggers> </service>



самые смешные приколы мобильник смешно каждый день

  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006