我想出了如何在我的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);
有什么想法吗?
答案 0 :(得分:0)
尝试替换
./serverstart "$@"
通过
./serverstart "$@" &