Windows扩展--win32service

2021-03-25

win32service扩展是Windows特定的扩展,它允许PHP与服务控制管理器进行通信以启动,停止,注册和注销服务,甚至允许您的PHP脚本作为服务运行

安装

扩展地址:https://pecl.php.net/package/win32service

注册/删除服务

//向SCM注册脚本,以便它可以用作具有给定名称的服务,
win32_start_service_ctrl_dispatcher(string $name , bool $gracefulMode = true):void
	name 服务的简称,由win32_create_service()注册 。
	gracefulMode true为退出优雅。false错误退出

//尝试从SCM数据库中删除服务。要获得此权限,必须具有管理特权。
win32_delete_service(string $servicename , string $machine = ?):void

服务运行

//启动命名服务。需要管理特权或具有在服务的ACL中设置的适当权限的帐户
win32_start_service(string $servicename , string $machine = ?):void

//停止命名服务。需要管理特权或具有在服务的ACL中设置的适当权限的帐户
win32_stop_service(string $servicename , string $machine = ?):void

//暂停命名服务。需要管理特权或具有在服务的ACL中设置的适当权限的帐户
win32_pause_service(string $servicename , string $machine = ?):void

//恢复已暂停的命名服务。需要管理特权或具有在服务的ACL中设置的适当权限的帐户
win32_continue_service(string $servicename , string $machine = ?):void
	servicename 服务的简称。
	machine 可选的机器名称。如果省略,则使用本地计算机  

添加SCM数据库

//尝试将服务添加到SCM数据库中。要获得此权限,必须具有管理特权。
win32_create_service(array $details , string $machine = ?):void
	details 一系列服务详细信息
		service 服务的简称。这是您将使用net 命令来控制服务的名称。该服务必须是唯一的(两个服务不能共享相同的名称),并且在理想情况下,名称中应避免使用空格。
		display 服务的显示名称。这是您将在服务小程序中看到的名称。
		description 服务的详细说明。这是您将在服务小程序中看到的描述。
		user 您要在其下运行服务的用户帐户的名称。如果省略,该服务将作为LocalSystem帐户运行。如果指定了用户名,则还必须提供密码。
		password 对应于的密码user。
		path 服务启动时将启动的可执行模块的完整路径。如果省略,将使用当前PHP进程的路径。
		params 命令行参数在服务启动时传递给该服务。如果要运行PHP脚本作为服务,则第一个参数应该是要运行的PHP脚本的完整路径。如果脚本名称或路径包含空格,请使用来包装PHP脚本的完整路径"。
		load_order 控制load_order。尚不完全支持
		svc_type 设置服务类型。如果省略,则默认值为 WIN32_SERVICE_WIN32_OWN_PROCESS。除非您知道自己在做什么,否则请不要更改此设置
		start_type 指定应如何启动服务。默认值为 WIN32_SERVICE_AUTO_START,这表示服务将在计算机启动时启动
		error_control 通知SCM在检测到服务问题时应采取的措施。默认值为 WIN32_SERVER_ERROR_IGNORE。尚不完全支持更改此值。
		delayed_start 如果delayed_start设置为true,则这将通知SCM该服务应在启动其他自动启动服务后加上短暂的延迟后启动。任何服务都可以标记为延迟自动启动服务;但是,除非服务start_type为, 否则此设置无效 WIN32_SERVICE_AUTO_START。此设置仅适用于Windows Vista和Windows Server 2008或更高版本
		base_priority 为了减少对处理器利用率的影响,可能有必要将基本优先级设置为低于正常水平
		dependencies 要定义服务的依赖关系,可能需要将此参数设置为数组中服务名称的列表
		recovery_delay 此参数定义失败与执行恢复操作之间的延迟。该值以毫秒为单位。默认值为60000。
		recovery_action_1 该操作将在首次失败时执行。默认值为 WIN32_SC_ACTION_NONE
		recovery_action_2 该操作将在第二次失败时执行。默认值为 WIN32_SC_ACTION_NONE
		recovery_action_3 该操作将在下一次失败时执行。默认值为 WIN32_SC_ACTION_NONE。
		recovery_reset_period 故障计数将在参数中定义的延迟后重置。延迟以秒为单位。默认值为86400。
		recovery_enabled 将此参数设置true为启用恢复设置,false 将其禁用。默认值为 false
		recovery_reboot_msg 设置此参数以定义在重新启动之前保存到Windows事件日志中的消息。仅当一个动作设置为时使用 WIN32_SC_ACTION_REBOOT。
		recovery_command 设置此参数以定义对定义一个动作时执行的命令 WIN32_SC_ACTION_RUN_COMMAND
	machine 您要在其上创建服务的可选计算机名。如果省略,它将使用本地计算机

发送控件到服务

//将自定义控件发送到服务
win32_send_custom_control(string $servicename , int $control , string $machine = ?):void
	servicename 服务的简称。
	control 自定义contole值在128到255之间。
	machine 可选的机器名称。如果省略,则使用本地计算机

定义服务退出信息

//定义或返回当前正在运行的服务的退出代码,更改或返回退出代码。仅当退出模式不正常时,才使用退出代码。如果该值不为零,则在服务失败后可以使用恢复配置;返回当前或旧的退出代码
win32_set_service_exit_code(int $exitCode = 1):int
	exitCode 退出时使用的返回码

//定义或返回当前正在运行的服务的退出模式,如果gracefulMode提供了参数,则更改退出模式。当退出模式不正常时,可以使用win32_set_service_exit_code()函数设置所使用的退出代码
win32_set_service_exit_mode(bool $gracefulMode = true):bool
	gracefulMode true为退出优雅。false错误退出

获取服务信息

//返回最后发送到该服务进程的控制代码。作为服务运行时,应定期检查此项以确定您的服务是否需要停止运行。
win32_get_last_control_message():int
	返回值将是控制常数中的一个: WIN32_SERVICE_CONTROL_CONTINUE, WIN32_SERVICE_CONTROL_DEVICEEVENT, WIN32_SERVICE_CONTROL_HARDWAREPROFILECHANGE, WIN32_SERVICE_CONTROL_INTERROGATE, WIN32_SERVICE_CONTROL_NETBINDADD, WIN32_SERVICE_CONTROL_NETBINDDISABLE, WIN32_SERVICE_CONTROL_NETBINDENABLE, WIN32_SERVICE_CONTROL_NETBINDREMOVE, WIN32_SERVICE_CONTROL_PARAMCHANGE, WIN32_SERVICE_CONTROL_PAUSE, WIN32_SERVICE_CONTROL_POWEREVENT, WIN32_SERVICE_CONTROL_PRESHUTDOWN, WIN32_SERVICE_CONTROL_SESSIONCHANGE, WIN32_SERVICE_CONTROL_SHUTDOWN, WIN32_SERVICE_CONTROL_STOP;如果该值介于128和255之间,则控制代码是自定义的

//查询服务的当前状态,并返回信息数组
win32_query_service_status(string $servicename , string $machine = ?):array
	servicename 服务的简称。
	machine 可选的机器名称。如果省略,将使用本地计算机

//通知SCM正在运行的服务的当前状态。该调用仅对正在运行的服务进程有效
win32_set_service_status(int $status , int $checkpoint = 0):void
	status 服务状态码,一 WIN32_SERVICE_RUNNING, WIN32_SERVICE_STOPPED, WIN32_SERVICE_STOP_PENDING, WIN32_SERVICE_START_PENDING, WIN32_SERVICE_CONTINUE_PENDING, WIN32_SERVICE_PAUSE_PENDING, WIN32_SERVICE_PAUSED。
	checkpoint 服务的检查点值会定期增加,以在长时间的启动,停止,暂停或继续操作期间报告其进度。只有当status为WIN32_SERVICE_STOP_PENDING、WIN32_SERVICE_START_PENDING、WIN32_SERVICE_CONTINUE_PENDING或WIN32_SERVICE_PAUSE_PENDING时,检查点才有效

 

{/if}