win32service

win32service

PHP 스크립트를 Windows 서비스로 띄우고 싶다면 이 확장이 딱이에요. win32service 확장은 Windows 전용 확장으로, PHP가 서비스 제어 관리자(Service Control Manager, 이하 SCM)와 통신해서 서비스를 시작·중지·등록·등록 해제할 수 있게 해 주고, 심지어 PHP 스크립트 자체를 서비스로 실행되게 해 줘요.

출처: win32service

본문

이 확장은 Windows 환경에서만 동작하므로, 사용하려면 대상이 Windows라는 점을 먼저 확인해야 해요. 스크립트를 서비스로 등록하고 제어하는 데 필요한 함수들이 여러 개 제공돼요.

서비스 제어 함수

  • win32_create_service — SCM 데이터베이스에 새 서비스 항목을 만들어요
  • win32_delete_service — SCM 데이터베이스에서 서비스 항목을 지워요
  • win32_start_service — 서비스를 시작해요
  • win32_stop_service — 서비스를 중지해요
  • win32_pause_service — 서비스를 일시정지해요
  • win32_continue_service — 일시정지된 서비스를 다시 재개해요
  • win32_query_service_status — 서비스의 상태를 조회해요
  • win32_get_last_control_message — 이 서비스로 보내진 마지막 제어 메시지를 반환해요
  • win32_send_custom_control — 서비스에 사용자 정의 제어를 보내요
  • win32_start_service_ctrl_dispatcher — 스크립트를 SCM에 등록해서 주어진 이름의 서비스로 동작하게 해요(서비스 본체로 쓰는 핵심 함수예요)
  • win32_set_service_status — 서비스 상태를 갱신해요
  • win32_set_service_exit_code — 현재 실행 중인 서비스의 종료 코드를 정의하거나 반환해요
  • win32_set_service_exit_mode — 현재 실행 중인 서비스의 종료 모드를 정의하거나 반환해요
  • win32_set_service_pause_resume_state — 현재 실행 중인 서비스의 일시정지/재개 능력을 정의하거나 반환해요

환경 변수·권한 관리

서비스별로 사용자 정의 환경 변수를 다루는 함수도 있어요.

  • win32_add_service_env_var, win32_remove_service_env_var, win32_get_service_env_vars

그리고 서비스에 대한 접근 권한을 관리하는 함수도 제공돼요.

  • win32_add_right_access_service, win32_read_right_access_service, win32_read_all_rights_access_service, win32_remove_right_access_service

관련 클래스

  • Win32ServiceException — 서비스 처리 중 발생하는 예외 클래스예요.
  • Win32Service\RightInfo — 서비스 권한 정보를 나타내는 클래스로, 도메인·사용자 이름·권한 목록을 읽는 메서드(getDomain, getUsername, getRights 등)를 제공해요.

더 알아보기

설치 요구 사항과 보안 고려 사항은 Installing/Configuring 문서의 Requirements, Installation, Security consideration 항목을 확인해 보세요. 미리 정의된 상수 목록은 Predefined Constants 문서에 있어요.