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