我需要将PHP脚本设置为Windows服务。
无论哪个用户登录,我都需要它运行,并且在系统启动时-听起来Windows服务是最好的,但是很高兴听到其他建议。
(此脚本连续运行,这不是我可以使用“计划任务管理器”运行的“每5分钟运行一次”。)
[http://support.microsoft.com/kb/251192涵盖了使用sc.exe程序来安装服务。
但是从我阅读的内容来看,我需要对PHP脚本进行包装,以接受来自Windows服务管理器的特殊命令。任何人都可以帮忙吗?
也许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
加载。 (或在资源管理器中双击它……)
我们为此任务使用了FireDaemon,它不需要包装脚本等。不幸的是,它不是免费软件。
您可以通过提供不同的参数以及脚本文件作为参数,在命令行上运行php。如果将整个行添加到服务配置中,它将运行。因此,您也可以在创建服务之前尝试该设备。如果php-script在您的网络路由之外,则应该将文件夹添加到Windows的PATH-Variable。
我发现了这个,但我自己还没有尝试过。 PHP实际上带有一些功能来执行此操作:http://uk.php.net/manual/en/book.win32service.php
几天后...我发现了这个宏伟的选择!