当Apache即将退出时,有没有办法运行命令/方法?
我有一个在带有Xampp的Windows中运行的应用程序(仅限本地使用),并希望在用户结束此应用程序时进行某种清理方法,这在按下Apache的停止按钮时会发生。 / p>
所以xampp或apache,甚至是我可以使用的php发起的任何事件? 命令可以来自cmd,php等等。
OBS:在apache关闭之前一定要做点什么,所以检查windows进程列表不是一个选项。答案 0 :(得分:3)
IMO,我建议你制作一个停止Apache的批处理文件,并在停止命令之前或之后调用你的清理命令。
这样,在重新安装或更改环境的情况下,批处理文件独立于XAMPP。
达到目标的步骤:
cmd
httpd -k install
httpd -k stop
httpd -k start
您可以了解更多命令,请查看link
测试cleanandstopapache.bat
的示例:
clean.bat // or what ever calling cleaning command.
pause // just to test pause
httpd -k stop // stops Apache
注意:
- 通常您可以通过GUI启动和停止XAMPP。使用服务具有相同的效果唯一不同的是,你使用命令行启动和停止你的Apache,它说你可以在停止Apache之前放任何脚本来完成这项工作。
- 您可以使用XAMPP GUI或XAMPP服务,但不能同时使用这两种服务。
- 我在我的机器上进行了测试,但它确实有效。
- 可以为服务提供唯一的自定义名称,以便您可以在Windows服务中查看它。
醇>
答案 1 :(得分:1)
应用程序端和Apache端之间存在巨大差异。你的意思是哪一个?
如果您需要在应用程序期间但在应用程序结束时进行干净关闭,请在appripriate类中使用__deconstruct()
方法。
如果您需要更进一步,请使用ignore_user_abort()
和register_shutdown_function()
的组合。
如果您的意思是Apache停止,您应该搜索一个监视进程列表的脚本或工具,并在Apache进程不在此列表中时执行操作。
答案 2 :(得分:1)
你可以通过一个答案激发这个问题,它可以解决这个stackoverflow问题“在Apache启动/重启(Windows Server)后面的后台运行PHP脚本”
这是我的解决方案的link 在您的情况下,您必须替换
%APACHE_HOME%\bin\httpdVendor.exe -k runservice
通过
%APACHE_HOME%\bin\httpdVendor.exe -k stopservice
我没有测试这个案例,我希望它能帮助你 不要犹豫,向我询问有关您需求的问题:)
祝你好运:)