2011-12-20 2 views
0

私は、手間のかかる手作業のプロセスを自動化するために組み合わされた小さなPHP Webアプリケーションを持っています。このアプリケーションは、sshがソース管理からのアトミックな変更を基にしてターゲットマシンにソフトウェアをインストールしているGUIです(重要な場合はperforce)。このアプリケーションは、現在、新しいポップアップウィンドウで各インストールを開始します。だから、10台のマシンにソフトウェアをインストールしているとしたら、10種類のポップアップがあります。これはあまりにも多くなってきています。これらのプロセスを蹴飛ばして結果を1ページに表示するための私の選択肢は何ですか?PHP - 複数のリクエストを別のページにキックオフする方法、リクエストが完了して結果を得る方法、元のページに表示する方法

私は、すべてのインストールでdivを動的に作成し、それぞれのajax呼び出しを行い、それぞれのインストールの出力を対応するdivに表示するポップアップを作成できると考えていました。唯一の問題は、これらのプロセスをどのように並行して起動できるのか分かりません。もし私が一人一人外出するのを待たなければならないのなら、それは時間がかかるでしょう。私が助けてくれればjQueryを使っていますが、主に高水準のアーキテクチャーのアイデアを探しています。コード例は歓迎ですが、擬似コードは問題ありません。

+0

これまでに人形について聞いたことがありますか? http:// puppetlabs。com/ – Kenaniah

+0

私は持っていますが、私はそれを使うことはできません(政治的なこと、それは他の場所ではうまく実装されていませんでした。これを使うと既存の実装に引き込まれるでしょう) – user797963

答えて

0

私はあなたがどの程度進歩しているのか、必要とされるサーバーへのルートアクセス権を持っているのか分かりませんが、これは可能な方法の1つで、いくつかの異なるテクノロジーを使用しています。小規模ではなく小規模なアプリケーションです。しかし、とにかくそれについてお伝えします。

次のような技術/スタックが(あなたが述べたようにPHPに加えて)使用されています(Node.jsの内)

  • のWebSocket(Node.jsのの上)
  • JSON-RPCサーバー
  • Gearman
  • あなたがどうなるのか

、(そうJavaScriptを経由して)あなたのクライアントからのもので、ページが読み込まれると、接続はWebSocketを介して、Node.jsのに作られて)あなたはこのためにsocket.ioようなものを使用することができます)。

次に、サーバーにリクエストを送信する(これは時間がかかるかもしれませんが)タスクを実行することに決めたとき、これはJSONでエンコードされた生の本体であるか、単純GET /do/something。重要なことは次に起こることです。

サーバー上で、ジョブが受信されると、サーバーにタスクを追加して、Gearmanに新しいジョブを開始します。これはあなたの仕事を処理し、非ブロッキングリクエストになりますので、リクエストを行ったクライアントにすぐに返信することができます。

これで、Gearmanワーカーのすべてのサーバーがジョブを受け取り、処理を開始します。これは議論のために5分かかるかもしれません。作業が終了すると、作業者はJSONエンコードされたメッセージを作成し、JSON-RPC経由でnode.jsサーバーに送信します。

メッセージを取得した後、Websocketを介してそれについて知る必要のあるすべての接続にイベントを送信できます。

私はプロジェクトのためにこのようなものが一回必要でしたが、一日でnode.jsの基本を学ぶことができました(既に強いJS背景を持っています)。 2日目には完全プッシュ/プルメッセージングジョブ通知プラットフォームが完成しました。

+0

本当にこのことが好きです。ギアマンを置き換えることができます。 node.jsを少し調べる必要がありますが、純粋にサーバー側のjavascriptでいくつかのWebサービスを構築する際には、過去にチェックアウトしていました – user797963

関連する問題