【问题标题】:Stopping and Starting Apache Using PHP (!)使用 PHP (!) 停止和启动 Apache
【发布时间】:2010-04-30 14:36:39
【问题描述】:

我有两个相关的问题。

1) 我有一个包含以下内容的批处理文件:

net stop wampapache
net start wampapache

它试图停止和启动我的 wamp 服务器。当我双击上面的stop.bat 文件时,它可以成功运行。当我尝试从我的 PHP 脚本运行它时,它会停止服务器但没有完全启动它,我猜这是因为 Apache 正在等待那个 PHP 进程退出?

function php_kill(){

    exec('stop.bat', $output = array(), $return);

    return $return;

}

2) 有没有办法重新启动我的网络服务器 (apache),同时保持 PHP 需要的会话变​​量可用?

谢谢大家

【问题讨论】:

  • 不确定但猜测:如果它等待结束,你能不能在你的函数结束时exit($return)?或将变量存储在数据库中,一旦需要它们就检查索引以查看特定条目是否存在。
  • 我也不确定,但我认为这是因为 'exec' 等待进程结束,但进程实际上杀死了 PHP,所以整个事情都卡住了!想法:将“stop.bat”作为后台进程运行?
  • Davide - 这是个好主意,也许我可以在执行 Apache 的停止/启动之前添加两秒钟的暂停。
  • Abs,我不知道在 Windows 上运行后台进程的方法,但我找到了这个链接 somacon.com/p395.php 希望对您有所帮助。
  • Davide - 我正在使用您的解决方案。您认为您可以概述它然后添加该链接,以便我可以选择正确答案,以便其他人可以受益。谢谢。

标签: php apache batch-file wampserver


【解决方案1】:

PHP 进程正在杀死一个进程,而该进程又会杀死 PHP 进程。这就像回到过去,在你生下你之前谋杀你的父母。我不明白它是如何工作的。

人们不得不问为什么这个功能是必要的。如果您必须这样做,您应该考虑从脚本安排服务重新启动。我不知道这是否可以通过 PHP 和 Windows 实现。

【讨论】:

  • 我认为批处理脚本将执行并停止和启动 apache。我只需要该 PHP 脚本在尝试停止时立即终止。进程中是否有与ignore_user_abort相反的东西?!?
【解决方案2】:

问题与exec等待进程结束,但进程实际上杀死了PHP,所以整个事情都卡住了。

stop.bat 作为后台进程运行应该可以修复它。 (这里how to run a background process on Windows

【讨论】:

  • 谢谢大卫。我使用了WScript.Shell - 这只是一个 Windows 解决方案,它是我所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2013-07-18
  • 2020-06-22
相关资源
最近更新 更多