Остановить загрузку страницы после SSH2_EXEC при загрузке скрипта

0

Я понял, как сделать некоторые сценарии оболочки на моем сервере CentOS 6.6 и запустить их с веб-страницы PHP. Моя единственная проблема заключается в том, что один из этих сценариев (используемый для запуска игрового сервера) фактически не прекращается. Я имею в виду, если я выполнил его с терминала SSH, сценарий запускается, и игровой сервер запускается, но он никогда не возвращается в bash, поэтому я могу ввести новую команду.

Если я хочу ввести новую команду (т.е. остановить сервер или выйти из терминала), я должен нажать Ctrl + C.

Моя проблема заключается в том, что страница PHP никогда не останавливает "загрузку". После запуска скрипта со страницы запускается игровой сервер, но страница продолжает загружаться. Как я могу избежать этого?

Я думаю, что могу поместить 10-секундный таймер в свой сценарий оболочки, а затем сделать что-то вроде Ctrl + C, чтобы сообщить моему скрипту PHP, что он закончил выполнение скрипта, но я не знаю, возможно ли это или как это сделать.

Здесь сценарий оболочки для запуска игрового сервера:

#!/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
Лучший ответ

Попробуйте заменить

./serverstart "$@"

от

./serverstart "$@" &
  • 0
    ./serverstart "$@" & же самое с ./serverstart "$@" &
  • 0
    хорошо, попробуйте ./serverstart "$@" >/dev/null 2>&1 &
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню