加载脚本后,在SSH2_EXEC之后停止页面加载

时间:2015-03-13 04:48:46

标签: php linux bash shell

我想出了如何在我的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);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

尝试替换

./serverstart "$@"

通过

./serverstart "$@" &