1

Cygwin を使用して Windows サーバーにコマンドを送信しています。数日前に質問をしましたが、回答がありませんでした。私は phpseclib に大きな問題があり、それは $ssh->write(); です。指図。$ssh->exec(); を使用しました。しかし、サーバーに送信されたコマンドはゲーム サーバー ファイルをダウンロードしていますが、これには最大 20 分かかる場合があり、しばらくすると、FastCGI タイムアウト設定を超えたため、php ページがタイムアウトします。それで、私は $ssh->write(); だと思いました。私のためにそれを解決できましたが、サーバーに送信しているコマンドは実行されません。使用しようとしている実行コマンドと書き込みコマンドは次のとおりです。

$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」です。

どんな助けでも大歓迎です!現在、オープンソースのゲーム サーバー コントロール パネルを作成しています。

前もって感謝します!

よろしく、トム。

4

1 に答える 1

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 と & があります。

于 2012-10-27T04:15:12.130 に答える