(PECL win32service >=0.1.0)
win32_start_service_ctrl_dispatcher — Registra el script con el ACS, por lo que puede actuar como el servicio con el nombre dado
Cuando de lanza mediante el Administrador de Control de Servicios, se requiere un porceso de servicio para "registralo" con él para establecer la supervisión del servicio y las características de comunicación. Esta función lleva a cabo el registro produciendo un hilo para manejar la comunicación a bajo nivel con el adminstrador de control de servicios.
Una vez iniciado, el proceso de servicio debería hacer 2 cosas. La primera es llamar
al Administrador de Control de Servicios que esté ejecutando el servicio. Esto se lleva a cabo
llamando a win32_set_service_status() con la
constante WIN32_SERVICE_RUNNING
. Si necesita realizar
algún proceso prolongado antes de que el servicio esté realmente ejecutándose, puede
usar la constante WIN32_SERVICE_START_PENDING
. Lo segundo
es continuar registrando con el administrador de control de servicios por lo que
puede determinar si debería finalizarse. Esto se lleva a cabo llamando
periódicamente a win32_get_last_control_message() y manteniendo el
código devuelto de manera apropiada.
Devuelve TRUE
en caso de éxito, FALSE
si hay un problema con los parámetros o Código de error Win32 en caso de error.
Ejemplo #1 Un ejemplo de win32_start_service_ctrl_dispatcher()
Comprobar si el servicio se está ejecutando bajo el ACS.
<?php
if (!win32_start_service_ctrl_dispatcher('dummyphp')) {
die("Probablemente no esté ejecutándome bajo el administrador de control de servicios");
}
win32_set_service_status(WIN32_SERVICE_START_PENDING);
// Algún proceso prolongado para levantar este servicio y ejecutar.
win32_set_service_status(WIN32_SERVICE_RUNNING);
while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
# hacer su trabajo aquí, intentando no tomar más de 30 segundos
# antes de ejecutar de nuevo el bucle
}
?>