win32_start_service_ctrl_dispatcher
  (PECL win32service >=0.1.0)
win32_start_service_ctrl_dispatcher — Registra o script no GCS, para que ele possa atuar como o serviço com o nome fornecido
  
 
  Descrição
  
   win32_start_service_ctrl_dispatcher(
string $name, 
bool $gracefulMode = true): 
void 
  
  
   Uma vez iniciado, o processo de serviço deve fazer duas coisas. A primeira é informar
   o Gerenciador de Controle de Serviço que o serviço está em execução. Isto é conseguido
   chamando win32_set_service_status() com a
   constante WIN32_SERVICE_RUNNING. Se for necessário executar
   algum processo demorado antes que o serviço esteja realmente em execução, pode
   ser usada a constante WIN32_SERVICE_START_PENDING. A
   segunda é continuar a fazer registro com o Gerenciador de Controle de Serviço para que
   ele possa determinar se deve ser encerrado. Isso é conseguido chamando periodicamente
   a função win32_get_last_control_message() e manipulando o
   código de retorno de forma adequada.
  
  Cuidado
   
    Desde a versão 0.2.0, esta função funciona somente no SAPI CLI. Em outros SAPI,
    esta função é desabilitada.
   
   
  
 
 
  Valor Retornado
  
   Nenhum valor é retornado.
  
  
   Antes da versão 1.0.0, retornava WIN32_NO_ERROR em caso de sucesso, false se houver um problema com os parâmetros ou um Código de Erro Win32 em caso de falha.
  
  
 
  Erros/Exceções
  
   Antes da versão 1.0.0, se o SAPI não for "cli", esta função emite um
   erro de nível E_ERROR.
  
  
   A partir da versão, lança uma exceção
   Win32ServiceException se o SAPI não for
   "cli".
  
  
 
 
  Exemplos
  
   
    Exemplo #1 Um exemplo de win32_start_service_ctrl_dispatcher()
    
     Verifica se o serviço está sendo executado no GCS.
    
<?php
if (!win32_start_service_ctrl_dispatcher('dummyphp')) {
  die("Provavelmente não estou sendo executado no Gerenciador de Controle de Serviço");
}
win32_set_service_status(WIN32_SERVICE_START_PENDING);
// Algum processo demorado para colocar este serviço em funcionamento.
win32_set_service_status(WIN32_SERVICE_RUNNING);
while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
  # faça algum trabalho aqui, tentando não demorar mais do que cerca de 30 segundos
  # antes de voltar ao loop novamente
}
?>