【发布时间】:2013-06-24 06:39:26
【问题描述】:
我有一个修改我的 httpd.conf 文件的 PHP 脚本,所以我需要在 Apache 中自动重新加载它。
在 Linux 上,可以正常重启,但在 Windows 上(我使用 restart 命令)它会终止所有当前连接。在 Windows 上是否有作为优雅重启的命令?有解决办法吗?
【问题讨论】:
标签: windows apache2 httpd.conf
我有一个修改我的 httpd.conf 文件的 PHP 脚本,所以我需要在 Apache 中自动重新加载它。
在 Linux 上,可以正常重启,但在 Windows 上(我使用 restart 命令)它会终止所有当前连接。在 Windows 上是否有作为优雅重启的命令?有解决办法吗?
【问题讨论】:
标签: windows apache2 httpd.conf
是的,您应该使用 -k 开关。
httpd.exe -k restart or apache.exe -k restart
这里有更多信息。 http://www.zrinity.com/developers/apache/usage.cfm
编辑:
这不应该是优雅的重点。注意我使用了-k。这与正常重启不同。它让当前会话在重新读取配置时完成他们的任务,以便它立即开始接受新请求。
来自文档:
USR1 或优雅信号导致父进程建议子进程在当前请求后退出(或者如果它们没有提供任何服务则立即退出)。父级重新读取其配置文件并重新打开其日志文件。随着每个子节点的死亡,父节点将其替换为来自新一代配置的子节点,该子节点立即开始为新请求提供服务。
http://httpd.apache.org/docs/2.2/stopping.html#graceful
它正在做你所要求的。
编辑 2:
添加此链接并提供两种可能的版本,因为有些人认为您只有一种特定的方式来做某事,而不是自己搜索。
http://httpd.apache.org/docs/2.4/platform/windows.html#wincons
我想我只是要删除这个答案,因为要么人们无法阅读,要么如果它对某人不起作用,它会获得 DV。不同的开发人员制作了不同的 Windows 版本。如果它不起作用,请从他们那里寻找答案。甚至 Linux 也有不同的命令,具体取决于发行版。天啊
【讨论】:
Apache.exe,有些使用httpd.exe。如果您从命令提示符执行此操作,则无需在 Windows 中使用扩展名。 那是也是我提供链接的原因。它也是例如。主要线索是 -k 选项,无论操作系统如何。你甚至懒得读书吗?所以这是毫无根据的反对票。
在最新的 Apache 2.4.20 VC10 中,“httpd -k restart”命令实际上会优雅地重启。它不会断开任何连接,例如,如果有人从您的服务器下载某些东西,它不会中断这个过程。另一个证据是“-k restart”不会重置 mod_status 提供的服务器统计信息,甚至不会改变“Restart Time”值。
虽然“httpd -k graceful”和“httpd -k graceful-stop”命令在 Windows 中可用,但它们不会工作,并给出错误“无法创建套接字”。
【讨论】: