加载脚本时SSH2_EXEC后停止页面加载


Stop page load after SSH2_EXEC when script is loaded

我想出了如何在我的 CentOS 6.6 服务器中制作一些 shell 脚本,并从 PHP 网页运行它们。我唯一的问题是其中一个脚本(用于启动游戏服务器)实际上并没有停止运行。我的意思是,如果我从 SSH 终端执行它,脚本会运行并且游戏服务器会启动,但它永远不会返回 bash,所以我可以输入一个新命令。

如果我想输入一个新命令(即停止服务器或退出终端),我必须按 Ctrl+C。

我的问题是PHP页面永远不会停止"加载"。从页面运行脚本后,游戏服务器启动,但页面继续加载。我怎样才能避免这种情况?

我想我也许可以在我的 shell 脚本中放置一个 10 秒的计时器,然后执行某种 Ctrl+C 来告诉我的 PHP 脚本它完成了脚本的运行,但我不知道这是否可能或如何做到这一点。

以下是用于启动游戏服务器的 shell 脚本:

#!/bin/sh
cd /home/user/serverfiles/
./serverstart "$@"

这就是我从我的网站运行它的方式:

$ip = '192.168.0.30'; 
$user = 'user'; 
$pass = 'password'; 
$connection = ssh2_connect($ip); 
ssh2_auth_password($connection,$user,$pass);
$stream = ssh2_exec($connection, 'stop');
$errorStream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
stream_set_blocking($errorStream, true);
stream_set_blocking($stream, true);
echo "Output: " . stream_get_contents($stream);
echo "Error: " . stream_get_contents($errorStream);        
fclose($errorStream);
fclose($stream);

有什么想法吗?

尝试替换

./serverstart "$@"

./serverstart "$@" &