2012-10-26 66 views
1

我使用Cygwin將命令發送到Windows服務器。 幾天前我問了一個問題,但它仍然沒有答案。 我有一個與phpseclib大問題,它是$ ssh-> write();命令。我用過$ ssh-> exec();但發送到服務器的命令正在下載遊戲服務器文件,這可能需要長達20分鐘,過了一段時間後,php頁面超時,因爲它超過了FastCGI超時設置。所以,我認爲$ ssh-> write();可以爲我解決,但我發送給服務器的命令沒有得到執行。下面是在EXEC和寫我試圖使用命令:

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

這個代碼加載永遠,然後超時。我已經通過將FastCGI的超時設置更改爲最大1小時來解決此問題。這個命令會在服務器上執行。

這是我想送,但不執行寫入命令:

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

該命令沒有得到在服務器上執行。迴應時,我從它得到的回覆是「1」。

任何幫助,高度讚賞! 目前正在開發一款開源遊戲服務器控制面板。

在此先感謝!

最好的問候, 湯姆。

回答

0

要讀取$ ssh-> write()的響應,您需要執行$ ssh-> read()。例如。

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

$ SSH->寫()的輸出1,因爲SSH- $>寫()的返回true。

無論如何,你可以嘗試... $ ssh-> setTimeout(5)或其他。

我不知道是否可以將Windows命令發送到後臺?用Linux有沒有和&。