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.
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.
}
?>