問題タブ [gearman]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1093 参照

amazon-ec2 - Gearmand を AWS Linux EC2 にインストールしようとすると、yum はデフォルトのリポジトリで必要なパッケージを見つけることができません

このガイドに従って、Amazon Linux 64 ビットを実行しているマイクロ EC2 インスタンスにギアマンドをインストールしようとしています: http://planet.mysql.com/entry/?id=28654

しかし、私は問題に直面しています

次の出力が得られます。

これらのパッケージをインストールするために yum に追加する必要があるリポジトリはありますか? もしそうなら、yum にリポジトリを追加するにはどうすればよいですか?

0 投票する
1 に答える
512 参照

web-applications - セキュリティ-ギアマンのジョブIDをクライアントと共有する、悪い習慣ですか?

Gearmanジョブサーバーを自分のWebサイトのアーキテクチャに組み込むことを計画しています。特にギアマンを使用して達成することを計画している1つのタスクは、私のWebサイトでのFacebook認証です。

現在、ユーザーがFacebook JS SDKを介してFacebookアプリを承認することでサイトにログインできるようにしています。認証が成功した後、AJAX呼び出しを介してユーザーのaccess_tokenをサーバーに送信し、サーバーがaccess_tokenを取得すると、facebookGraphAPIを照会します。現在のユーザーの情報を取得し、それに応じてユーザーのセッションを設定します。FacebookAPI呼び出しをワーカースレッドにプッシュしたいと思います。

ジョブをgearmanに送信し、gearmanに遅延ジョブIDを返してもらい、そのIDをクライアントのブラウザーに送り返し、ブラウザーに設定された間隔(prob 0.5または1.0秒)でサーバーをポーリングさせて、API呼び出しが完了したかどうかを確認します。ジョブIDをサーバーに返し、ジョブの完了ステータスを確認することによって。

私の質問は、内部のジョブIDをクライアントと共有することにセキュリティ上のリスクはありますか?

0 投票する
1 に答える
1369 参照

php - Gearman(PHPを使用)-すべてのワーカーにジョブ/メッセージを送信することは可能ですか?

Gearmanは初めてですが、一般的な概念は理解しています。これはあなたが通常やりたいことではないことを私は理解しています...しかし、私はすべての労働者に「仕事」を送る方法があるかどうか疑問に思いましたか?

ワーカーを監視し、ワーカーが死んだときにリスポーンするスクリプトがあります。すべてのワーカープロセスを強制終了/リスポーンしたいときに、「死ぬ」というジョブを送信できるようにしたいと思います。

これは可能ですか?ありがとう!

0 投票する
1 に答える
3279 参照

high-availability - HA ギアマン ジョブ サーバーのベスト プラクティスとは

Gearman のメイン ページでは、ジョブ サーバーが停止した場合にクライアントが新しいジョブ サーバーを取得できるように、複数のジョブ サーバーで実行することについて言及しています。以下のステートメントと図を考えると、ジョブ サーバーが相互に通信していないように見えます。

私たちの質問は、停止したジョブ サーバーでキューに入れられたジョブはどうなるかということです。これらのサーバーの高可用性を確保して、ジョブが障害によって中断されないようにするためのベスト プラクティスは何ですか?

複数のジョブ サーバーを実行し、クライアントとワーカーを、構成されている最初に使用可能なジョブ サーバーに接続させることができます。このようにして、1 つのジョブ サーバーが停止した場合、クライアントとワーカーは自動的に別のジョブ サーバーにフェールオーバーします。あまり多くのジョブ サーバーを実行することは望ましくありませんが、冗長性を確保するために 2 つまたは 3 つのジョブ サーバーを用意することをお勧めします。

ここに画像の説明を入力

ソース

0 投票する
2 に答える
526 参照

mysql - DB を強制終了せずにファイル処理に Gearman を使用するにはどうすればよいですか?

現在、アップロードされたファイルを処理するためのシステムを設計しています。

ファイルは LAMP Web フロントエンドを介してアップロードされ、いくつかの段階を経て処理する必要があります。いくつかの段階は順次実行され、他の段階は並行して実行される可能性があります。

いくつかの重要なポイント:

  • ファイルをアップロードするクライアントは、処理の結果ではなく、ファイルを安全に配信することのみを気にするため、完全に非同期にすることができます。
  • ファイルのサイズは最大 50kb です
  • システムは、1 日あたり 100 万を超えるファイルを処理できるようにスケールアップする必要があります
  • ファイルが失われたり未処理になったりしないようにすることが重要です
  • 私の仮定はMySQLですが、これが利点を提供できる場合、NoSQLに問題はありません.

私の最初のアイデアは、フロント エンドでファイルを MySQL DB に直接配置し、各ステップを完了するたびに多数のワーカー プロセスがデータベース設定フラグをポーリングするようにすることでした。いくつかの大まかな計算の後、ワーカーのポーリングがアップロード テーブルでロックの問題を引き起こし始めるため、これは拡張できないことに気付きました。

いくつかの調査の結果、Gearman が問題の解決策になる可能性があるようです。ワーカーは Gearman サーバーに登録でき、DB を壊すことなくジョブをポーリングできます。

私が現在困惑しているのは、最も効率的な方法でジョブをディスパッチする方法です。これを行うには、次の 3 つの方法があります。

  • データベースをポーリングしてジョブを Gearman に送信する単一のディスパッチャーを作成する
  • ファイルを受信したときに、アップロード プロセスで非同期の Gearman ジョブを起動する
  • Gearman MySQL UDF 拡張機能を使用して、ファイルが挿入されたときに DB がジョブを起動するようにします。

最初のアプローチでも DB に多少の打撃を与えますが、障害から簡単に回復できます。2 番目の 2 つのアプローチでは、障害から回復するために Gearman キューの永続性を有効にする必要があるように思われますが、これを有効にすると、Gearman に引き付けられる生の速度が失われ、DB のボトルネックがダウンストリームにシフトするのではないかと懸念しています。

これらのアプローチのどれが最も効率的であるか (またはより良い実世界の例) に関するアドバイスをいただければ幸いです。

また、私がすべてを間違った方向に進めていると思われる場合は、遠慮なくご連絡ください。

0 投票する
1 に答える
765 参照

php - PHP 拡張機能をインストールせずに PHP アプリケーションから Gearman を使用する

PHP アプリケーションで実行時間の長いジョブを配布するために Gearman サーバーを使用することに興味があります。残念ながら、アプリケーション サーバーに直接アクセスできず、PECL 拡張機能をインストールできません。

使用できる純粋な PHP クライアント ライブラリはありますか?

0 投票する
1 に答える
944 参照

php - codeigniter プロジェクトで Net_Gearman を使用する

Codeigniter を使用してアプリケーションを構築しましたが、Gearman ジョブ キュー サーバーを使用して、長時間実行されるタスクをバックグラウンドで実行したいと考えています。私は Net_Gearman PEAR ライブラリを使用しています (モジュールをインストールするのはあまり望ましくありませんが、残念ながら、サーバーのセットアップに追加のモジュールをインストールすることはできません)。このライブラリと codeigniter の統合を達成するためのベストプラクティスの方法について、優れたチュートリアルやガイドはありますか? たぶん、codeigniter 用のカスタム ビルド ライブラリでさえありますか? ありがとう!

0 投票する
2 に答える
315 参照

php - PHPとGearmanで利用可能なサーバーがないことを検出する

私は現在、標準のバインディングを使用してPHPでGearmanを利用しています(ドキュメントはこちら)。すべて正常に機能していますが、GearmanClient :: addServer(ここのドキュメント)への呼び出しが「成功」したときに検出できないという小さな問題が1つあります。つまり、...

問題は、サーバーを追加してもソケットI / Oが試行されないことです。つまり、サーバーが実際に存在しないか、動作していない可能性があります。これは、後続のコード呼び出し(サーバーが実際には存在しないシナリオで)が失敗し、PHP警告が発生することを意味します

ギアマンデーモンがサーバー上で追加前または追加後に動作していることを確認する方法はありますか、または最善の方法は何ですか?

これを実現して、Gearmanが死亡した可能性があるシナリオや、サーバーに接続できない可能性があるシナリオを確実に処理できるようにしたいと思います。

どうもありがとう。

0 投票する
1 に答える
1306 参照

php - CLI経由でCodeIgniterスクリプトを実行する-CIスーパーオブジェクトメソッドがありません

CodeIgniterプロジェクトがあり、CLIを介してコントローラーメソッドの1つを呼び出したいのですが、CIスーパーオブジェクトにアタッチされている通常のプロパティとメソッドが欠落しているようです。

たとえば、通常のhttpリクエスト中に完全に正常に実行される次のスクリプトを実行すると、エラーが発生します。

これは、CLIを介して返されるエラーです

私はスクリプトをそのように呼んでいます:$ php index.php worker test

編集

さらに、このスクリプト:

戻り値:NULL

0 投票する
1 に答える
1905 参照

php - Gearman: バックグラウンド ワーカーからクライアントへのデータの送信

バックグラウンドで (PHP を使用して) 実行されているギアマン ワーカーからデータを送り返すことは可能ですか?

ステータス (分子/分母) をクライアントに渡すことができることはわかっていますが、データを「返す」必要があります。

背景は、別のサーバーでワーカーを呼び出す必要があり、ワーカーが応答しない場合はメイン スクリプトを続行する必要があるということです。そのため、ワーカーをバックグラウンドで実行する必要があると思います。しかし、私は彼らからのデータが必要です。

更新: できないようです。データを共有データベースに保存するか、リモートサーバーからローカルサーバーに書き込むか、リモートサーバーから読み取るか、次のようなものを作成する必要があると思います: