Registra o script no GCS, para que ele possa atuar como o serviço com o nome fornecido

# 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

function win32_start_service_ctrl_dispatcher(string `$name`, bool `$gracefulMode` = true): void

Quando iniciado através do Gerenciador de Controle de Serviço, um processo de serviço é necessário para "registrar-se" nele para estabelecer monitoramento de serviço e recursos de comunicação. Esta função realiza o registro gerando um thread para lidar com a comunicação de baixo nível com o Gerenciador de Controle de Serviço.

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.

### Parâmetros

`name`

  O nome abreviado do serviço, conforme registrado por win32_create_service().

`gracefulMode`

  `true` para uma saída normal. `false` para saída com erro. Consulte win32_set_service_exit_mode() para obter mais detalhes.

### 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"`.

### Registro de Alterações

Versão | Descrição
--- | ---
PECL win32service 1.0.0 | Lança uma exceção ValueError em caso de dados inválidos nos parâmetros, anteriormente retornava `false`.
PECL win32service 1.0.0 | Lança uma exceção Win32ServiceException em caso de erro, anteriormente um Código de Erro Win32 era retornado.
PECL win32service 1.0.0 | O tipo de retorno agora é void, anteriormente era mixed.
PECL win32service 0.4.0 | O parâmetro `gracefulMode` foi adicionado.
PECL win32service 0.2.0 | Esta função funciona apenas no SAPI `"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
    }
    ?>

### Veja Também

- win32_set_service_status() - Atualiza o status do serviço
- win32_get_last_control_message() - Retorna a última mensagem de controle enviada para este serviço
- win32_set_service_exit_mode() - Define ou retorna o modo de saída do serviço em execução atual
- win32_set_service_exit_code() - Define ou retorna o código de saída do serviço em execução atual
- Códigos de Erro Win32

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open