也许Resource Kit Tools(特别是srvany.exe)可以帮助你在这里。 MSDN:How To Create A User-Defined Service和可能的this hint for 2008 Server应该帮助您将任何可执行文件设置为服务。 (我已经在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
加载。 (或双击它在资源管理器中...)
您好 - 感谢您的详细解答。我其实不需要再做这个了,所以现在不要做这个测试,但是这看起来像是正确的路径,如果其他任何人都这样做。 – James 2012-01-02 12:01:55
虽然这已经很老了,但我想指出一个非常老的srvany.exe的替代方案(它不会对底层php脚本的终止做出反应):NSSM(非吸吮服务器管理器)它的兼容替代品到srvany.exe。请参阅https://nssm.cc – Peter 2016-07-19 14:05:23