ギアマンは私を夢中にさせます。私はすべてのチュートリアル、すべてのプレゼンテーション、すべてのハウツーを知っていますが、必要な情報を取得できていません。
私の計画
ローカルホスト上にある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シャットダウンが完了しました
私は自分のアプリケーションで何がうまくいかなかったのか本当にわかりませんでした。