1

ギアマンは私を夢中にさせます。私はすべてのチュートリアル、すべてのプレゼンテーション、すべてのハウツーを知っていますが、必要な情報を取得できていません。

私の計画

ローカルホスト上にある1つのジョブサーバーにジョブを送信するクライアントが1つあります。このサーバー(ホームサーバー)では、WebサイトとDBを実行します。これで、W1とW2と呼ぶ2つ(後でWorker-Server)ができました。これらのサーバーでは、ハードワークを実行し、Gearman-Job-Serverがインストールされているホームサーバーからジョブを取得する必要があります。ジョブは同期されています。つまり、クライアントはタスクが終了するまで待機します。

しかし、私はこれを行う方法がわかりません。私が見つけたすべてのチュートリアルは、クライアントとワーカーが同じマシンで実行されているときにGearmanをセットアップする方法を教えてくれました。ホームサーバーに、gearman-job-serverとPHPギアマンAPIをPECLとともにインストールしました。私がsupervisordで処理する私のクライアントでは、次のように電話します。

$gmc = new GearmanClient();
$gmc->addServer();

これは、2つの無料のWorker-Serverの1つよりも取得する必要があるローカルホストJob-Serverにタスクを送信する必要があります。右?

ワーカーサーバーW1およびW2のworker.php(supervisordでも処理されます)には、次のように記述されています。

$gmworker= new GearmanWorker();
$gmworker->addServer('Home-Server-IP', 4730);

これで、Worker-ServerはHome-Serverからタスクを取得する必要がありますか?W1とW2にgearman-job-serverをインストールする必要がありますか、それともPECL PHP Gearman APIが必要なものすべてですか?また、Worker-Serverを構成する必要がありますか?

ギアマンを理解できるように、これらの質問を私に説明していただければ幸いです。

さらに詳しい情報:ホームサーバーで転倒したとき

gearmand -vvv -u root --listen=127.0.0.1

出力は次のとおりです。

  • INFO起動中
  • INFO Listening on 127.0.0.1:4730(6)
  • INFOウェイクアップパイプを作成しています
  • INFOIOスレッドウェイクアップパイプを作成しています
  • INFOリスニングソケットのイベントの追加(6)
  • INFOウェイクアップパイプのイベントを追加しています
  • INFOメインイベントループに入る

最後の行の後、シェルはそれ以上何もしていません。私は新しいコマンドを傾けることさえできません。

さらに多くの情報。

Gearmandがホームサーバーで実行されていることを確認しました。

ps -e|grep gearman

出力:

  • 1460?00:00:00ギアマン

ワーカーサーバーでコマンドを実行すると

/usr/sbin/gearmand -u root -vvv --listen=Home-Server-IP

次のエラーが発生しました。

  • INFO起動中
  • FATAL _listen_init:bind:99
  • INFOシャットダウンが完了しました

私は自分のアプリケーションで何がうまくいかなかったのか本当にわかりませんでした。

4

1 に答える 1

0

どのバージョンのギアマンを使用していますか?エラーメッセージの出力は、それがかなり古いと私に思わせます。

なぜルートとして実行しようとしているのですか?

于 2012-08-23T06:25:24.583 に答える