2012-02-15 12 views
0

私は本質的にphpを使った対話型sshシステムを書こうとしていますが、ssh_execまたはシェルを使ってリモートサーバ上でphpコマンドを実行し、コマンドから出力を収集する必要がありますリアルタイムで。sshからのリアルタイム出力をPHPで実行する

私は顔が青くなり、出力をファイルにリダイレクトして、このファイルの内容をsftpでポーリングする別のスクリプトを持つまで、出力バッファリングとflush()を使いこなしました。 jqueryを使用してページ上の出力divを更新します。

私はこの長い道のりを過ぎる直前に、誰かが単一のスクリプトを使用して動作するソリューションを持っていますか?

ありがとうございます!

答えて

0

次のようなものは動作しませんか?

$output = shell_exec($theScript); 
file_put_contents($someFile, $output, FILE_APPEND); 

また、スティックの端が間違っていますか?

2

これは、単一のスクリプトを使って確実に作業のようなものはありません:あなたは、サーバー側のバッファリングをほとんど制御がある - flush()かもしれないのか、期待どおりに動作しない場合があります、あなたはmod_phpCGIFCGIまたは何を使用して天気を依存、あなたはクライアントでのバッファリングを全く制御できません(IEはここでは有名です)。

そこには、AJAXでそれをしました。

+0

あなたは道を踏んだみたいな音がしています。コードを分かち合うだけの親切な態度ですか?私の最終的な解決策をウェブサイトとして共有することを嬉しく思います! – Chrispy

+0

もしそうでなければ、あなたはajaxで結果を返すためにあなたがしたことを概説できますか?私が話しているサーバーはWebサーバーではないかもしれないので、ファイルに出力してhttpでフェッチすることはできません。通常のsftpリクエストを実行し、jqueryで結果をdivに出力するのが正しい解決策ですか?それは私にとって非常に重いようです! – Chrispy

+2

私は大好きですが、そうではないかもしれません - 今は顧客に属しています。しかし、それは非常に簡単でした:私は外部コマンドを(私の場合は、長期実行インポートスクリプト)を開始し、出力をファイルにリダイレクトし、セッション変数$ seek = 0を設定しました。 Ajaxは500ms待って、$ seekからendまでのファイルを読み込み、$ seekの新しい位置を思い出して、読み込んだテキストを返しました。 –

関連する問題