我正在使用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”。
非常感谢任何帮助! 目前正在制作一个开源游戏服务器控制面板。
提前致谢!
最诚挚的问候, 汤姆。
答案 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和&。