phpseclib — Длительное время ожидания команды и $ssh-›write(); не работает

Я отправляю команды на сервер Windows с помощью Cygwin. Несколько дней назад я задал вопрос, но он так и остался без ответа. У меня большая проблема с phpseclib, и это $ssh->write(); команда. Я использовал $ssh->exec(); но команда, отправленная на сервер, загружает файлы игрового сервера, что может занять до 20 минут, и через некоторое время время ожидания страницы php истекает, поскольку оно превышает настройку времени ожидания FastCGI. Итак, я подумал, что $ssh->write(); может решить это для меня, но команда, которую я отправляю на сервер, не выполняется. Вот команда для exec и запись, которую я пытаюсь использовать:

$ssh->exec('C:/hldsupdatetool/hldsupdatetool -command update -game ".$game." -dir ".$dir');

и этот код загружается вечно, а затем истекает время ожидания. Я решил эту проблему, изменив настройку времени ожидания FastCGI на один час, что является максимальным. Эта команда ДЕЙСТВИТЕЛЬНО выполняется на сервере.

Это команда записи, которую я пытаюсь отправить, но не выполняется:

$ssh->write('C:/hldsupdatetool/hldsupdatetool -command update -game ".$game." -dir ".$dir."\r\n");

Эта команда НЕ выполняется на сервере. Ответ, который я получаю от него при повторении, равен «1».

Любая помощь высоко ценится! В настоящее время создается панель управления игровым сервером с открытым исходным кодом.

Заранее спасибо!

С уважением, Том.


person Tom    schedule 26.10.2012    source источник


Ответы (1)


Чтобы прочитать ответ $ssh->write(), вам нужно сделать $ssh->read(). например.

http://phpseclib.sourceforge.net/ssh/examples.html#interactive

$ssh->write() выводит 1, потому что $ssh->write() возвращает true.

В любом случае, вы можете попробовать... $ssh->setTimeout(5) или что-то в этом роде.

Я не знаю, можно ли отправлять команды Windows в фоновый режим? В Linux нет nohup и &.

person neubert    schedule 27.10.2012