Example #1
0
 public function __construct()
 {
     $this->onStart = function () {
         win32_set_service_status(ServiceStatusConstants::RUNNING);
     };
     $this->onLoop = function () {
         switch (win32_get_last_control_message()) {
             case ServiceControlMessageConstants::PRESHUTDOWN:
             case ServiceControlMessageConstants::SHUTDOWN:
             case ServiceControlMessageConstants::STOP:
                 win32_set_service_status(ServiceStatusConstants::STOP_PENDING);
                 $this->stop();
                 break;
             case ServiceControlMessageConstants::INTERROGATE:
                 win32_set_service_status(ServiceStatusConstants::RUNNING);
                 break;
                 /*case ServiceControlMessageConstants::PAUSE;
                       win32_set_service_status (ServiceStatusConstants::PAUSE_PENDING);
                       win32_set_service_status (ServiceStatusConstants::PAUSED);
                       break;
                   case ServiceControlMessageConstants::CONTINUE_SERVICE;
                       win32_set_service_status (ServiceStatusConstants::CONTINUE_PENDING);
                       win32_set_service_status (ServiceStatusConstants::RUNNING);
                       break;*/
             /*case ServiceControlMessageConstants::PAUSE;
                   win32_set_service_status (ServiceStatusConstants::PAUSE_PENDING);
                   win32_set_service_status (ServiceStatusConstants::PAUSED);
                   break;
               case ServiceControlMessageConstants::CONTINUE_SERVICE;
                   win32_set_service_status (ServiceStatusConstants::CONTINUE_PENDING);
                   win32_set_service_status (ServiceStatusConstants::RUNNING);
                   break;*/
             default:
                 win32_set_service_status(ServiceStatusConstants::NOT_IMPLEMENTED);
         }
     };
     $this->onStop = function () {
         win32_set_service_status(ServiceStatusConstants::STOPPED);
     };
     register_shutdown_function($this->onStop);
     parent::__construct();
 }
Example #2
0
 public function run()
 {
     //TRUE on success; FALSE on parameter problem; Win32 Error Code on error
     $code = win32_start_service_ctrl_dispatcher($this->serviceName);
     if (!$code) {
         throw new \Exception("Error running service: " . $this->serviceDisplayName . ". Was the service started?");
     }
     if ($code !== TRUE && php_sapi_name() !== 'cli') {
         $codeName = array_search($code, get_defined_constants(true)['win32service']);
         throw new \Exception("Error running service: " . $this->serviceDisplayName . " with code: " . $codeName);
     }
     win32_set_service_status(WIN32_SERVICE_START_PENDING);
     error_log("Service " . $this->serviceDisplayName . " setting up run...");
     $this->setupRun();
     win32_set_service_status(WIN32_SERVICE_RUNNING);
     error_log("Service " . $this->serviceDisplayName . " running...");
     while (WIN32_SERVICE_CONTROL_STOP !== win32_get_last_control_message()) {
         $this->msgs[] = win32_get_last_control_message();
         $this->work();
     }
 }
Example #3
0
    case 'run':
        win32_start_service_ctrl_dispatcher($serviceName);
        win32_set_service_status(WIN32_SERVICE_RUNNING);
        break;
    case 'debug':
        set_time_limit(10);
        break;
    default:
        KalturaLog::info('Unkown action');
        exit(-1);
}
$kscheduler = new KGenericScheduler($phpPath, $iniDir);
while (1) {
    //Handle Windows Service Request
    if ($serviceAction == 'run') {
        switch (win32_get_last_control_message()) {
            case WIN32_SERVICE_CONTROL_CONTINUE:
                break;
            case WIN32_SERVICE_CONTROL_INTERROGATE:
                win32_set_service_status(WIN32_NO_ERROR);
                break;
            case WIN32_SERVICE_CONTROL_STOP:
                KalturaLog::info('Service stopped gracefully');
                if (file_exists($pid)) {
                    unlink($pid);
                }
                win32_set_service_status(WIN32_SERVICE_STOPPED);
                exit(0);
            default:
                win32_set_service_status(WIN32_ERROR_CALL_NOT_IMPLEMENTED);
        }