在退出apache / xampp之前运行命令

时间:2016-09-09 19:46:30

标签: php apache xampp

当Apache即将退出时,有没有办法运行命令/方法?

我有一个在带有Xampp的Windows中运行的应用程序(仅限本地使用),并希望在用户结束此应用程序时进行某种清理方法,这在按下Apache的停止按钮时会发生。 / p>

所以xampp或apache,甚至是我可以使用的php发起的任何事件? 命令可以来自cmd,php等等。

OBS:在apache关闭之前一定要做点什么,所以检查windows进程列表不是一个选项。

3 个答案:

答案 0 :(得分:3)

IMO,我建议你制作一个停止Apache的批处理文件,并在停止命令之前或之后调用你的清理命令。

这样,在重新安装或更改环境的情况下,批处理文件独立于XAMPP。

达到目标的步骤:

  1. 以管理员身份运行cmd
  2. 转到您的XAMPP Apache bin文件夹
  3. 安装Apache作为服务,httpd -k install
  4. 现在您应该能够通过命令行手动启动和停止Apache
  5. httpd -k stop
    httpd -k start
    

    您可以了解更多命令,请查看link

    1. 现在让批处理文件调用它你喜欢的任何东西,做清洁工作并在停止或启动Apache之前或之后放置它
    2. 测试cleanandstopapache.bat的示例:

      clean.bat // or what ever calling cleaning command.
      pause // just to test pause
      httpd -k stop // stops Apache
      
        

      注意:

           
          
      1. 通常您可以通过GUI启动和停止XAMPP。使用服务具有相同的效果唯一不同的是,你使用命令行启动和停止你的Apache,它说你可以在停止Apache之前放任何脚本来完成这项工作。
      2.   
      3. 您可以使用XAMPP GUI或XAMPP服务,但不能同时使用这两种服务。
      4.   
      5. 我在我的机器上进行了测试,但它确实有效。
      6.   
      7. 可以为服务提供唯一的自定义名称,以便您可以在Windows服务中查看它。
      8.   

答案 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

我没有测试这个案例,我希望它能帮助你 不要犹豫,向我询问有关您需求的问题:)

祝你好运:)