8

我有一个修改我的 httpd.conf 文件的 PHP 脚本,所以我需要在 Apache 中自动重新加载它。

在 Linux 上,可以正常重启,但在 Windows 上(我使用 restart 命令)它会终止所有当前连接。在 Windows 上是否有作为优雅重启的命令?有解决方法吗?

4

2 回答 2

18

是的,您应该使用 -k 开关。

   httpd.exe -k restart or apache.exe -k restart 

更多信息在这里很好。http://www.zrinity.com/developers/apache/usage.cfm

编辑:

这不应该是Graceful的重点。请注意,我使用了-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 也有不同的命令,具体取决于发行版。天哪

于 2013-06-26T22:46:28.937 回答
2

在最新的 Apache 2.4.20 VC10 中,“httpd -k restart”命令实际上会进行正常重启。它不会断开任何连接,例如,如果有人从您的服务器下载某些东西,它不会中断这个过程。另一个证据是“-k restart”不会重置 mod_status 提供的服务器统计信息,甚至不会改变“Restart Time”值。

虽然“httpd -k graceful”和“httpd -k graceful-stop”命令在 Windows 中可用,但它们将无法工作,给出“无法创建套接字”错误。

于 2016-07-06T11:08:29.037 回答