「AMQPは現在PHPにあります」という記事の続きで
php-rabbitをインストールするときに期待される石に興味がある人 1)RabbitMQブローカーのインストール自体は問題なく完了しました。 FreeBSDポート、MacO、.debパッケージからアセンブル
依存関係:RabbitMQは適切な内部マルチスレッドメカニズムを備えたerlangに実装されているため、erlangパッケージ(otp)が必要です。 ソースからRabbitMQをビルドしようとしましたが、何かを考慮しませんでした。 一般的に、経験は十分ではありませんでした。
2)Cクライアントのインストールをいじる必要がありました。その機能については、以下で少し説明します。 しかし、Mercuryクライアントを使用している場合、私と一緒にインストールしても問題はありませんでした。
{{{
echo Cloning rabbitmq-c
hg clone -r 84aaa77eba59 hg.rabbitmq.com/rabbitmq-c
cd rabbitmq-c
echo Closning rabbitmq-codegen
hg clone -r 75c3ef2e1083 hg.rabbitmq.com/rabbitmq-codegen codegen
echo Compiling
autoreconf -i && ./configure && make && make install
}}}
しかし、最初はスマートマーシャとして、ソースからコンパイルすることにしました。
ここで、RabbitMQファミリのアプリケーションのアーキテクチャは次のように構成されていることに注意する必要があります:AMQPプロトコルの変更にコードが強く依存しないように、開発チームはすべてのプロトコル依存部分がJSONおよびこのファイル(stable amqpで記述されたコード生成ソリューションを提案しました-0.8.json、実験amqp-0.9.json)に加えて、コードジェネレーターがありました。 コードジェネレーターはhg.rabbitmq.com/rabbitmq-codegen/
通常のMakefileは少し動作不能であることが判明し、起動時にamqp_framing.hおよびamqp_framing.cファイルが存在しないことを示すエラーが発生するため、次のように生成する必要があります。
-最初にファイル(amqp-0.8.json、amqp_codegen.py)をコードジェネレーターフォルダーからアップロードし、librabbitmqディレクトリーに追加します
-librabbitmq:python codegen.pyディレクトリからコードジェネレーターを実行すると、次のように表示されます。
python codegen.py
Usage:
codegen.py header|body path_to_amqp_spec.json path_to_output_file
-次のコマンドを入力します。
python codegen.py header <full/path/to/amqp-0.8.json> <full/path/to/amqp_framing.h>
python codegen.py body <full/path/to/amqp-0.8.json> <full/path/to/amqp_framing.c>
コード生成後、Makefileのコード生成セクションamqp_framing.hおよびamqp_framing.cを無効にする必要があります。 そして、なぜ私たちがペンでそれをしたなら、彼らはなぜ必要なのでしょう。
それらの内容をコメントアウトしました。
amqp_framing.h: $(AMQP_SPEC_JSON_PATH) $(CODEGEN_PY)
# PYTHONPATH=$(AMQP_CODEGEN_DIR) $(PYTHON) $(CODEGEN_PY) header $< $@
amqp_framing.c: $(AMQP_SPEC_JSON_PATH) $(CODEGEN_PY)
# PYTHONPATH=$(AMQP_CODEGEN_DIR) $(PYTHON) $(CODEGEN_PY) body $< $@
たぶん、Makefileを台無しにして、タンバリンとのダンスがないように設定するだけで十分でした...
3).soの場合、拡張機能のインストールは正常です:
phpize
./configure
sudo make install
プロジェクト
phpize
./configure
sudo make install
phpize
./configure
sudo make install
次にphp.iniに書き込みます:rabbit.so;
静的にインストールする場合は、モジュールをphp / extディレクトリに書き換えると、すべてがPECL拡張モジュールと同じになります。
./buildconf
./configure .... --with-rabbit
make & make install