win32_start_service_ctrl_dispatcher

(PECL win32service >=0.1.0)

win32_start_service_ctrl_dispatcherRegistra 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

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.

Caution

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

Example #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