我有两个相关的问题。
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需要的会话变量?
全部谢谢
答案 0 :(得分:4)
PHP进程正在杀死一个进程,反过来又杀死了PHP进程。这就像回到过去并在生下你的父母之前谋杀你的父母。我不知道它是如何起作用的。
人们不得不问为什么这个功能是必要的。如果您必须这样做,您应该考虑从脚本安排服务重启。我不知道这是否可以通过PHP和Windows实现。
答案 1 :(得分:1)
问题与exec
等待进程结束这一事实有关,但该进程实际上会杀死PHP,因此整个事情都会被卡住。
运行stop.bat
作为后台进程应该解决它。 (这里how to run a background process on Windows)