win32service win32_start_service_ctrl_dispatcher
(PECL win32service >=0.1.0)
win32_start_service_ctrl_dispatcher — 스크립트를 SCM에 등록하여 지정된 이름의 서비스로 작동할 수 있도록 합니다.
설명
win32_start_service_ctrl_dispatcher(string $name
, bool $gracefulMode
= true
): void
서비스 제어 관리자를 통해 시작되면 서비스 모니터링 및 통신 시설을 설정하기 위해 서비스 프로세스가 "check-in"되어야 합니다. 이 함수는 서비스 제어 관리자와의 하위 수준 통신을 처리하기 위해 스레드를 생성하여 체크인을 수행합니다.
서비스 프로세스가 시작되면 2가지 작업을 수행해야 합니다. 첫 번째는 서비스 제어 관리자에게 서비스가 실행 중임을 알리는 것입니다. 이것은 WIN32_SERVICE_RUNNING
상수로 win32_set_service_status()를 호출하여 달성됩니다. 서비스가 실제로 실행되기 전에 긴 프로세스를 수행해야 하는 경우 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 Error Code를 반환했습니다.
오류/예외
버전 1.0.0 이전에는 SAPI가 "cli"
가 아니면 이 함수는 E_ERROR
레벨 오류를 내보냅니다.
버전 1.0.0부터 SAPI가 "cli"
가 아닌 경우 Win32ServiceException이 발생합니다.
변경 로그
버전 | 설명 |
---|---|
PECL win32service 1.0.0 | 매개변수의 잘못된 데이터에 대해 ValueError를 발생시킵니다. 이전에는 false 가 반환되었습니다. |
PECL win32service 1.0.0 | 이전에 Win32 Error Code가 반환된 오류 시 Win32ServiceException을 throw합니다. |
PECL win32service 1.0.0 | 반환 유형은 이제 void이며 이전에는 mixed되었습니다. |
PECL win32service 0.4.0 | GracefulMode 매개변수가 추가되었습니다. |
PECL win32service 0.2.0 | 이 함수는 "cli" SAPI에서만 작동합니다. |
Examples
예제 #1 win32_start_service_ctrl_dispatcher() 예제
서비스가 SCM에서 실행 중인지 확인하십시오.
<?php
if (!win32_start_service_ctrl_dispatcher('dummyphp')) {
die("I'm probably not running under the service control manager");
}
win32_set_service_status(WIN32_SERVICE_START_PENDING);
// Some lengthy process to get this service up and running.
win32_set_service_status(WIN32_SERVICE_RUNNING);
while (WIN32_SERVICE_CONTROL_STOP != win32_get_last_control_message()) {
# do some work here, trying not to take more than around 30 seconds
# before coming back into the loop again
}
?>
기타
- win32_set_service_status() - 서비스 상태 업데이트
- win32_get_last_control_message() - 이 서비스에 전송된 마지막 제어 메시지를 반환합니다.
- win32_set_service_exit_mode() - 현재 실행 중인 서비스의 종료 모드를 정의하거나 반환합니다.
- win32_set_service_exit_code() - 현재 실행 중인 서비스에 대한 종료 코드 정의 또는 반환
- Win32 오류 코드