将 PHP 脚本设置为 Windows 服务

2022-08-30 18:35:04

我需要将PHP脚本设置为Windows服务。

无论哪个用户登录,我都需要它来运行,并且在系统启动时 - 所以听起来Windows服务是最好的,但我很高兴听到其他建议。

(此脚本连续运行,这不是“每5分钟运行一次”的事情,我可以使用计划任务管理器。

http://support.microsoft.com/kb/251192 介绍如何使用 sc.exe 程序来安装服务。

但根据我所读到的内容,我需要在PHP脚本上有一个包装器来接受来自Windows服务管理器的特殊命令。任何人都可以帮忙吗?


答案 1

也许资源工具包工具(特别是srvani.exe)可以在这里为您提供帮助。MSDN:如何创建用户定义的服务以及 2008 Server 的此提示应该可以帮助您将任何可执行文件设置为服务。(我已经成功地在Windows 2003 Server,Windows 2008 Server和Windows XP Professional上使用它[不过其他资源工具包])

您将创建一个包含 的 bat,用 srvany.exe包装,瞧,一旦计算机加载服务,脚本就会启动。php your-script.php

srvany.exe应该处理那些你期望守护程序执行的启动/停止/重新启动调用。它将在启动时加载可执行文件,在停止时终止进程,在重新启动时执行这两项操作。因此,您不必担心这部分。您可能希望检查register_shutdown_function() 是否有助于确定服务进程何时被终止。

您甚至可以定义对其他服务的依赖关系(例如某些数据库或类似服务)。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\THENAMEOFYOURSERVICE]
"DependOnService"="DEPENDONTHIS"

替换为您为服务提供的名称以及要依赖的服务的名称(例如“Postgres9.0”或其他名称)。将该文件保存到 并使用 加载它。(或者在资源管理器中双击它...)THENAMEOFYOURSERVICEDEPENDONTHISdependency.regregedit /s dependency.reg


答案 2

我们使用FireDaemon来完成此任务,它不需要包装脚本等。不幸的是,它不是免费软件。


推荐