win32_start_service_ctrl_dispatcher
(PECL win32service >=0.1.0)
win32_start_service_ctrl_dispatcher — Registra un script con SCM, por lo que puede ser interpretado como un servicio con el nombre dado
Descripción
win32_start_service_ctrl_dispatcher(
string $name
,
bool $gracefulMode
= true):
void
Una vez iniciado, el proceso del servicio debe hacer dos cosas. La primera es
informar al Service Control Manager que el servicio está en ejecución. La segunda
es llamar a la función win32_set_service_status() con la constante
WIN32_SERVICE_RUNNING
. Si necesita lanzar procesos largos antes
de que el servicio se inicie, puede usar la constante
WIN32_SERVICE_START_PENDING
. La segunda es continuar
verificando con el Service Control Manager para determinar si el servicio se
detiene o no. Esto implica llamar periódicamente a la función
win32_get_last_control_message() y tratar el código devuelto.
Precaución
Desde la versión 0.2.0, esta función solo funciona en línea de
comandos. Está deshabilitada en otros casos.
Valores devueltos
No se retorna ningún valor.
Antes de la versión 1.0.0, retornaba WIN32_NO_ERROR
en caso de éxito, false
si hay un problema con los parámetros o un Código de Error Win32 en caso de fallo.
Errores/Excepciones
Antes de la versión 1.0.0, si esta función se utiliza fuera del SAPI "cli"
, se emitirá
un error E_ERROR
.
A partir de la versión 1.0.0, lanzará una
Win32ServiceException si el SAPI no es
"cli"
Ejemplos
Ejemplo #1 Ejemplo con win32_start_service_ctrl_dispatcher()
Verifica si el servicio funciona bajo SCM.
<?php
if (!win32_start_service_ctrl_dispatcher('dummyphp')) {
die("Probablemente no estoy funcionando bajo el Gestionador de Control de Servicio");
}
win32_set_service_status(WIN32_SERVICE_START_PENDING);
// Algunos procesos largos a recuperar mientras el servicio funciona.
win32_set_service_status(WIN32_SERVICE_RUNNING);
while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
# Realice su trabajo aquí.
# Intente no tomar más de 30 segundos antes de devolver.
}
?>