8

私の開発サーバーは Debian Squeeze で、ソースからコンパイルした Gearman 1.1.5 と php pecl 拡張機能 v1.1.1 を実行しています。

reverse_client.php スクリプトを実行すると、GEARMAN_COULD_NOT_CONNECT エラーが発生します。

PHP Warning: GearmanClient::do(): send_packet(GEARMAN_COULD_NOT_CONNECT) Failed to send server-options packet -> libgearman/connection.cc:430 in /home/bealers/build/gearman-1.1.1/examples/reverse_client.php on line 26

これについてここにいくつかの同様の投稿があり、それらはすべて GM が実行されていないことを示しています。

確実に走っています。

私はこれらのパラメータでそれを始めています:

PARAMS="--queue-type=MySQL --mysql-db=test_db --mysql-user=gearman --mysql-password=gearman"

Gearman_queue テーブルを test_db にドロップしてからデーモンを再起動すると、テーブルが再作成されるため、mysql 接続は問題なく、明らかに開始されます。

localhost の 4730 に telnet で接続することもできるので、ファイアウォールの問題はありません。

当初、GM は mysql の前に起動していたため起動に問題があったため、init スクリプトを編集しました

### BEGIN INIT INFO
# Provides:          gearman-job-server
# Required-Start:    $network $remote_fs $syslog mysql

そして、update-rd.c gearman-job-server defaults後で開始するように設定し、起動時に正常に開始します。

私が考えることができる唯一の他のことは、最初はapt経由でインストールしたが、バージョンが古かったので削除してソースからコンパイルしたことです。/usr/sbin/gearmand は存在しません。唯一のバージョンは /usr/local/sbin/gearmand です。

ps ax | grep gearman実行中のプロセスが 1 つだけ表示されます。

Netstat は実行中のプロセスを 1 つだけ表示します`

tcp 0 0 *:4730 *:* LISTEN 2325/gearmand

PECL ライブラリは問題ないようです。

php -i | grep gearman

/etc/php5/cli/conf.d/gearman.ini,
gearman
gearman support => enabled
libgearman version => 1.1.5

私はアイデアがありません

4

4 に答える 4

15

私は同じ問題を抱えていて、数日間の欲求不満の後に最近それらを解決しました(心配するプロセスが3つあるため、トラブルシューティングが困難です:-)

(少なくとも私の場合は) GearmanClient::addServer() と GearmanWorker::addServer() の PHP ドキュメントが正しくないようです。具体的には、ドキュメントは、ホスト名とポート番号はオプションであり、指定しない場合はデフォルトとして localhost とポート 4730 を使用することを暗示しているようです。これは決して機能しません。今日、クライアント プロセスとワーカー プロセスの両方に対してそれらを明示的に指定しようとすると、突然すべてが機能し始めました。

ホスト名とポートのすべての値を指定してみて、これが機能するかどうかを確認してください。

于 2013-02-15T18:10:49.070 に答える
2

このようなものを使用した場合

$client->addServers('127.0.0.1', 4730);

また

$client->addServers();

このようなものを使用してください

$client->addServers('127.0.0.1:4730');

PS - 私は localhost IP を使用しました。これは実際のホスト IP に置き換えることができます。

于 2016-04-18T11:43:37.947 に答える