2016-02-16 29 views
1

我有以下幾點:Laravel SSH - 緊密聯繫

$commands = [ 
      'cd steamcmd', 
      'cd cs_go', 
      './srcds_run -game csgo -console -usercon -ip '.$server->server_ip.' -maxplayers '.$server->slots.' +hostname '.$server->server_name.' +sv_setsteamaccount '.$server->server_token.' -port 27015 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 -tickrate '.$server->tickrate.'' 
     ]; 
     \SSH::run($commands, function($line) { 
      echo $line.PHP_EOL; 
     }); 
     $server->status = 'Running'; 
     $server->save(); 
     return redirect('/control-panel/game-server'); 

然而,問題是,從我$commands陣列的最後一個命令運行的遊戲服務器,我相信應用程序正在等待命令完成運行,但它不會。

如何強制關閉會話以便更新$server然後重定向用戶?

回答

2

嘗試把一個&在您的命令結束後,將運行命令未擋住你的終端,像這樣:

'./srcds_run -game csgo -console -usercon -ip '.$server->server_ip.' -maxplayers '.$server->slots.' +hostname '.$server->server_name.' +sv_setsteamaccount '.$server->server_token.' -port 27015 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 -tickrate '.$server->tickrate.' &' 
+0

這工作但它似乎取消會話,因此服務器不再運行,如果有可能通過Laravel SSH創建一個tmux會話,但是我的理解是這是不可能的 – user3662307

+0

如果你使用nohup,該怎麼辦? 'nohup your_command&' –

+0

同樣的問題不幸 – user3662307