(PECL win32service SVN)
win32_start_service_ctrl_dispatcher — Добавляет в Диспетчер Служб скрипт, который может быть использован как служба с заданным именем
При запуске с помощью диспетчера служб, процессу службы необходимо сверяться с ним для мониторинга службы и связи с ней. Эта функция выполняет сверку посредством создания потока для обработки низкоуровневой связи с диспетчером служб.
   После запуска процесс службы должен осуществить два действия. Первое - сообщить
   диспетчеру служб, что служба запущена. Это осуществляется путем вызова win32_set_service_status()
   с константой WIN32_SERVICE_RUNNING. Если вам необходимо выполнить
   некий длительный процесс перед запуском службы, то вы можете использовать константу
   WIN32_SERVICE_START_PENDING. Второе - продолжить сверку с диспетчером
   служб, чтобы определить необходимость отключения. Это осуществляется посредством
   периодического вызова win32_get_last_control_message() и обработки
   кода возврата соответствующим образом.
  
   Возвращает TRUE в случае успешного завершения, FALSE если была обнаружена проблема с параметрами или код ошибки Win32 при неудачном завершении работы.
  
Пример #1 Пример win32_start_service_ctrl_dispatcher()
Проверьте, запущен ли сервис в диспетчере служб.
<?php
if (!win32_start_service_ctrl_dispatcher('dummyphp')) {
  die("Я, вероятно, не запущен в диспетчере служб");
}
win32_set_service_status(WIN32_SERVICE_START_PENDING);
// Некий длительный процесс для обработки и запуска службы.
win32_set_service_status(WIN32_SERVICE_RUNNING);
while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
  # здесь производятся какие-то действия, не занимающие больше чем 30 секунд
  # перед соответствующим переходом в цикл.
}
?>