問題タブ [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 に答える
4071 参照

php - 複数の変数を Gearman ワーカー関数に渡す

2 つの変数を同じワーカー関数に渡すにはどうすればよいですか? たとえば、クライアントから渡す 2 つの文字列を連結したいとします。いくつかのサンプル コードで配列が使用されているのを見ましたが、それを機能させることができません。

ただし、これは無効なワークロードであることを示しています(配列が渡されていることが原因だと思います)。それらをどのように渡す必要がありますか-それぞれにタスクを作成する必要がありますか?

次に、配列を送信できない場合、ワーカー関数で複数の変数を使用するにはどうすればよいですか。関数 String_Concat($job, $job2) のように試しましたが、それらをworkload()に追加する方法がわかりません

配列を渡すことができた場合のコード例を次に示します。

これを行う最善の方法は何ですか?どうもありがとう!

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

php - コンパイルされた PHP 拡張機能が無効です

PHP を 5.2 に固定して Ubuntu 10.04 に Gearman PHP 拡張機能をインストールしようとしていますが、PHP は有効な Zend 拡張機能ではないと言っています。

ソースからコンパイルする (または pecl 経由でインストールする) 場合はエラーはありませんが、インストール後、PHP は次のように表示します。

モジュールのアーキテクチャは、PHP のアーキテクチャと一致します (32 ビット システムと 64 ビット システムの両方で試しました)。知っている限り、すべての依存関係をインストールしました(見逃した場合はエラーが発生すると思います-最初はそうしました)。

PHP 5.2 で動作する最高のバージョンであるため、gearman 0.8.0 を使用しています。最後に確認したとき、私たちの drupal 6 は 5.3 でうまく動作しなかったため、私は PHP 5.2 を使用しています (おそらくこれはコアで修正されていますが、必ずしもモジュールでは修正されていません)。

この動作に関するドキュメントが見つからないため、これは PHP が固定されていることと関係があると思われます

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

php - PHPスクリプトをバックグラウンドで実行するための最良の解決策は何ですか:Gearmanまたはシェルを介して?

PHPスクリプトをバックグラウンドで動作させたいです。そこで私はいくつかの調査を行い、2つの解決策を見つけました。

  1. シェル経由。
  2. http://gearman.org/

どの解決策が最適か疑問に思います。

また、PHP.iniにはメモリ制限があることもわかりました。この制限が私の「バックグラウンド」PHPスクリプトにどのように影響するのか、そしてより多くのメモリが必要な場合はどのソリューションが最適か疑問に思っています。

詳細:

バックグラウンドで動作するスクリプトは、PHPとKohanaフレームワークを使用してファイルを暗号化します。

私はUbuntu11を使用しています。

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

python - Python でマルチプロセス モジュールを使用して複数の Gearman プロセスを実行する

Python のマルチプロセッシング モジュールを使用して複数のギアマン ワーカー プロセスを実行したいのですが、プロセスがシーケンシャル モードで実行されているようです。複数の端末で個々の worker.py プログラムを実行すると、正常に動作します。しかし、非常に多くの端末で worker.py を手動で指定する負担を軽減したいと考えています。これに代わるものはありますか?

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

gearman - ギアマンの仕事を遅らせる/延期する方法は?

異なるサーバー上のデータを同期するためにギアマンを使用しています。1 つのメイン サーバーと、たとえば 10 のローカル サーバーがあります。考えられる状況の1つを説明しましょう。たとえば、ギアマンが作業を開始し、5 つのジョブが完了し、その 5 つのサーバーのデータが同期されたとします。たとえば、次のジョブの実行が開始されると、サーバーとの接続が失われ、現在使用できません。ギアマンのロジックで何度もリトライ。したがって、残りのジョブ (サーバー 7、8、9、10 用) は、6 番目が完了するまで実行されません。最善の解決策は、ジョブを延期してキューの最後に配置し、ジョブ 7 ~ 10 の作業を継続することです。

誰かがそれを行う方法を知っている場合は、方法を投稿してください。

PS: Python を使用しています。

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

instance - 複数の upstart インスタンスを自動的に起動する

PHP のギアマン ワーカーを使用して、さまざまなタスクを並行して実行します。すべてがうまく機能し、必要なときに起動するためのばかげた小さなシェル スクリプトがあります。プログラマーである (したがって怠け者である) ので、新興スクリプトを使用してこれらを起動できるかどうかを確認したかったのです。

インスタンススタンザの使い方がわかったので、インスタンス番号で開始できます。

そして、これはうまく機能し、次のように開始します。

これらのワーカーを使用したい方法は、いくつかのワーカー (コアごとに 1 つなど) を起動することであり、起動時にこれを実行したいと考えています。明確にするために、コアの数を検出するために upstart スクリプトは必要ありません。「8 つのインスタンスを実行する」とだけ言ってよろしいのですが、それが複数の実行が必要な理由です。これを自動的に行うために、upstart スクリプトで「start on」句を使用する方法はありますか?

たとえば、インスタンス 1、2、3、4 を開始しますか? 次に、シャットダウン時に適切に終了しますか?

これをinit.dスクリプトにフックできると思いますが、upstartがこのようなことを処理できるかどうか、または誰かがこの問題を理解しているかどうか疑問に思っていました.

乾杯!

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

gearman - ギアマンでのエラー状態と再試行?

例外がスローされたとき、またはエラーが発生したときにギアマンがどのように再試行するかについて、誰かが私を案内できますか?

Django アプリで Python ギアマン クライアントを使用しており、ワーカーは Django コマンドとして開始されます。このブログ投稿から、エラー状態からの再試行は単純ではなく、ワーカー側から sys.exit が必要であることを読みました。

おそらくsendFailまたはsendExceptionで再試行するように修正されましたか? また、gearman は指数関数アルゴリズムを使用した再試行をサポートしていますか? たとえば、SMTP エラーが発生した場合、2、4、8、16 秒後に再試行しますか?

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

python - Gearman Worker から失敗したジョブの出力を送信する最良の方法は何ですか?

私のコードでは、ユーザーが指定した再試行回数だけギアマン ジョブ (ファブリック コマンドを実行) を再試行しようとしています。試行ごとに、出力をキャプチャして追加しています。最後の再試行で、ジョブが失敗した場合、出力をクライアントに返したいと考えています。

何が起こっているかというと、job.send_fail() コマンドが単純に壊れて、失敗したコマンドの出力を返すために「出力を返す」コマンドにまったく移動しないということです。

ワーカーが死ぬことなく、ジョブを失敗させ、終了/失敗時にクライアントにデータを返すより良い方法はありますか?

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

php - PHP警告:GearmanClient :: doBackground():gearman_connection_flush:write:111

MacでVagrantを使用して本番セットアップを複製し、複数のGearmanサーバーを実行している問題を複製できるかどうかを確認しようとしています。

ただし、「Web」仮想マシンにジョブをGearmanキューに送信させることができず、代わりに件名に記載されているエラーが発生します。2つのVM間でpingを実行でき、一方のVMからもう一方のVMにSSHで接続できますが、ポート4730でTelnet接続を確立できないようです。

CLIから(-vvvを使用して)Gearmanサーバーを起動し、さらに多くのことが行われていることを確認しました。次のように、バックエンドが実際にWebVMからの接続を受け入れていることがわかります。

ただし、受信した接続では何もしていないようです。他の誰かがこの問題の経験を持っていますか、またはおそらくエラー111が何であるかを明らかにすることができますか?

ありがとう。