我试图找到一种方法来关闭我最近用PHP打开的程序。启动和停止服务器系统的一部分(使用.bat在java中生成的服务器)。我只能在后台打开它,是的,我启用了与桌面的交互。我想知道是否有一种方法可以返回我首先启动的程序进程的PID,然后使用该pid稍后关闭程序。
用于启动的PHP页面代码
<?php
session_start();
$id = $_GET['serverid'];
$mysqli = new mysqli("localhost", "root", "", "mainrspshosts");
/* check connection */
if ($mysqli->connect_errno) {
printf("Connect failed: %s\n", $mysqli->connect_error);
exit();
}
$query = "SELECT * FROM servers WHERE id = '" .$id. "' LIMIT 1";
if ($result = $mysqli->query($query)) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
if($_SESSION["username"]==$row["owner"]){
set_time_limit(300);
echo "Starting...<br><br>";
$output = shell_exec('c:\WINDOWS\system32\cmd.exe /c START run474.bat');
echo($output);
echo "Success!";
header("refresh:5;url=http://rspshost.zapto.org/ucp/serverstartedvalidation.php");
}
else{
header("location:index.php");
}
}
}
else{
header("location:index.php");
}
?>
答案 0 :(得分:0)
首先,您不需要单独打开cmd.exe,shell_exec意味着在控制台上运行命令,因为您可能正在通过此命令运行cmd
c:\WINDOWS\system32\cmd.exe /
所以你可以把它写成
shell_exec("start /filepath/fileName.bat");
就你的问题而言,php shell_exec只是执行传递给它的命令,它不知道命令的含义。由于每个应用程序的关闭机制,您通过shell_exec运行将是不同的,因此您需要通过传递另一个停止或终止进程的命令通过shell_exec关闭它。在您的情况下,创建一个
closing-run474.bat file
并通过shell_exec
调用它