array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.win32-start-service-ctrl-dispatcher.php', 1 => 'win32_start_service_ctrl_dispatcher', ), 'up' => array ( 0 => 'ref.win32service.php', 1 => 'win32service', ), 'prev' => array ( 0 => 'function.win32-set-service-status.php', 1 => 'win32_set_service_status', ), 'next' => array ( 0 => 'function.win32-start-service.php', 1 => 'win32_start_service', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/win32service/functions/win32-start-service-ctrl-dispatcher.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PECL win32service >=0.1.0)
win32_start_service_ctrl_dispatcher — Добавляет в Диспетчер Служб скрипт, который может быть использован, как служба с заданным именем
При запуске с помощью диспетчера служб, процессу службы необходимо сверяться с ним для мониторинга службы и связи с ней. Эта функция выполняет сверку посредством создания потока для обработки низкоуровневой связи с диспетчером служб.
После запуска процесс службы должен осуществить два действия. Первое - сообщить
диспетчеру служб, что служба запущена. Это осуществляется путём вызова win32_set_service_status()
с константой WIN32_SERVICE_RUNNING
. Если вам необходимо выполнить
некий длительный процесс перед запуском службы, то вы можете использовать константу
WIN32_SERVICE_START_PENDING
. Второе - продолжить сверку с диспетчером
служб, чтобы определить необходимость отключения. Это осуществляется посредством
периодического вызова win32_get_last_control_message() и обработки
кода возврата соответствующим образом.
Начиная с версии 0.2.0, эта функция работает только в "cli" SAPI. В прочих SAPI функция отключена.
name
Короткое имя службы, как при добавлении с помощью win32_create_service().
gracefulMode
true
для "элегантного" выхода. false
для выхода с ошибкой. Смотрите
win32_set_service_exit_mode() для получения подробной информации.
Функция не возвращает значения после выполнения.
До версии 1.0.0, Возвращает
WIN32_NO_ERROR
в случае успешного завершения , false
если обнаружилась проблема с параметрами или
код ошибки Win32 при неудачном завершении работы.
До версии 1.0.0, если SAPI не является "cli"
, данная функция вызывает ошибку уровня E_ERROR
.
Начиная с версии 1.0.0, выбрасывает исключение
Win32ServiceException, если SAPI не является "cli"
Версия | Описание |
---|---|
PECL win32service 1.0.0 |
Выбрасывает ValueError при некорректных данных в параметрах,
ранее возвращалось false .
|
PECL win32service 1.0.0 | Выбрасывает Win32ServiceException в случае возникновения ошибки, ранее возвращался Код ошибки Win32. |
PECL win32service 1.0.0 | Тип возвращаемого значения void, ранее был mixed. |
PECL win32service 0.4.0 |
Добавлен параметр gracefulMode .
|
PECL win32service 0.2.0 |
Эта функция работает только с "cli" SAPI.
|
Пример #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 секунд
# перед соответствующим переходом в цикл.
}
?>