我有一个修改我的httpd.conf文件的PHP脚本,所以我需要在Apache中自动重新加载它。
在Linux上,正常重启,但在Windows上(我使用restart命令)它会终止所有当前连接。在Windows上是否有一个命令为优雅重启?有解决方法吗?
答案 0 :(得分:12)
是的,你应该使用-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
答案 1 :(得分:0)
在最新的Apache 2.4.20 VC10中,“httpd -k restart”命令实际上正在重新启动。它不会丢弃任何连接,例如,如果有人从您的服务器下载某些内容,它将不会中断此过程。还有一个证据就是“-k restart”不会重置mod_status提供的服务器统计信息,甚至不会改变“重启时间”值。
尽管Windows中提供了“httpd -k graceful”和“httpd -k graceful-stop”命令,但它们无法正常发出错误“无法创建套接字”。
答案 2 :(得分:-1)
对不起@Panama杰克,但我也不认为它正在解决问题,我读了你的两个链接(打印和阅读)。 我认为令人困惑的部分是第一个链接使用httpd -k restart和httpd -k graceful的事实,而Windows的第二个链接仅使用httpd -k restart,我不清楚该链接重新启动是优雅的,因为它被解释在第二个链接(对于Unix)