phpseclib - 长命令超时和$ ssh-> write();不起作用

时间:2012-10-26 22:47:08

标签: php windows ssh phpseclib

我正在使用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的超时设置更改为一小时,这是最大值。该命令在服务器上执行。

这是我正在尝试发送但不执行的写命令:

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

此命令不会在服务器上执行。回声时我得到的回答是“1”。

非常感谢任何帮助! 目前正在制作一个开源游戏服务器控制面板。

提前致谢!

最诚挚的问候, 汤姆。

1 个答案:

答案 0 :(得分:0)

要阅读$ ssh-> write()的回复,您需要执行$ ssh-> read()。例如

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

$ ssh-> write()输出1,因为$ ssh-> write()返回true。

无论如何,你可以试试...... $ ssh-> setTimeout(5)或其他什么。

我不知道是否可以将Windows命令发送到后台?在Linux上有nohup和&。