将PHP脚本设置为Windows服务

问题描述 投票:18回答:6

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

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

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

[http://support.microsoft.com/kb/251192涵盖了使用sc.exe程序来安装服务。

但是从我阅读的内容来看,我需要对PHP脚本进行包装,以接受来自Windows服务管理器的特殊命令。任何人都可以帮忙吗?

php windows windows-services
6个回答
13
投票

也许Resource Kit Tools(特别是srvany.exe)可以在这里为您提供帮助。 MSDN:How To Create A User-Defined Service和可能的this hint for 2008 Server应该可以帮助您将any可执行文件设置为服务。 (我已经在Windows 2003 Server,Windows 2008 Server和Windows XP Professional [尽管有其他资源工具包]上成功使用了此功能)

您将创建一个包含php your-script.php的蝙蝠,使用srvany.exe和voila对其进行包装,一旦计算机加载了服务,该脚本便会启动。

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

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

Windows Registry Editor Version 5.00

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

THENAMEOFYOURSERVICE替换为您提供的服务的名称,并将DEPENDONTHIS替换为要依赖的服务的名称(例如“ Postgres9.0”等)。将该文件保存到dependency.reg并用regedit /s dependency.reg加载。 (或在资源管理器中双击它……)


3
投票

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


2
投票

您可以通过提供不同的参数以及脚本文件作为参数,在命令行上运行php。如果将整个行添加到服务配置中,它将运行。因此,您也可以在创建服务之前尝试该设备。如果php-script在您的网络路由之外,则应该将文件夹添加到Windows的PATH-Variable。


1
投票

我发现了这个,但我自己还没有尝试过。 PHP实际上带有一些功能来执行此操作:http://uk.php.net/manual/en/book.win32service.php


0
投票

几天后...我发现了这个宏伟的选择!


0
投票

NSSM - the Non-Sucking Service Manager也是解决方案,然后

© www.soinside.com 2019 - 2024. All rights reserved.