PHPはラbritmq及びamqp拡張を使用して取り付けます(一)
21323 ワード
rabbiitmqメッセージ中間件
phpはrabbiitmqを使いますが、他の人が集めている開発カバンを使いたくないなら、自分で磨きます.まず、統合開発パッケージを使用すると、PHPの拡張には PHPの拡張 をインストールします.
2.1
2.2サーバにアップロードする
2.3解凍
2.5 amqp-1.94に入り、加圧後のファイル
2.6コンパイル準備
2.9再度[2.6–2.8]の操作は、最終的にコンパイルが成功しているのを見ることができます.二つのものに注意が必要です.一つはコンパイルが完了した後、私たちの拡張保存位置
3.0この時に問題がなければ、私達はこの時にextension=amqp.soを追加します.
3.1配置ファイルの位置を検索します.普通は
3.2 PHP-FPMを再起動し、inxニュース生産者 ニュース消費者 サーバーでいくつかの端末を開けて、複数の消費者を実行して、生産者を実行します.私たち消費者の間で消費されているニュースが見られます.これは設定されているパラメータが違っています.
phpはrabbiitmqを使いますが、他の人が集めている開発カバンを使いたくないなら、自分で磨きます.
bcmath
という数学的関連の拡張が必要です.composer
を利用して開発パッケージをインストールします.{
"require": {
"php-amqplib/php-amqplib": ">=2.6.1"
}
}
composer.phar install
を実行すればいいです.amqp
を使用して、簡単に2.1
http://pecl.php.net/package/amqp
ここでは、各バージョンのインストールパッケージが見られます.ダウンロード選択amqp-1.9.4.tgz
をクリックしてダウンロードしてください.2.2サーバにアップロードする
2.3解凍
tar -xf amqp-1.9.4.tgz
2.4自己サーバ上のphpize php-config
の位置を検索する2.5 amqp-1.94に入り、加圧後のファイル
2.6コンパイル準備
/usr/bin/phpize
2.7 ./configure --with-php-config=/usr/bin/php-config
2.8 make && make install
は、一般的にこのステップで最も間違いやすいです.ここでエラーが与えられたヒントはrabbitmq-c
のこの依存性に欠けています.直接yum
はyum search rabbitmq
を検索します.ネット上では多くのコンパイルがインストールされています.必要ではないです.yum
がインストールできないなら、コンパイルしてインストールします.検索したものは4つあります.自分のサーバーに合うものを見つけました.普通はrabbitmq-devl
のバージョンです.2.9再度[2.6–2.8]の操作は、最終的にコンパイルが成功しているのを見ることができます.二つのものに注意が必要です.一つはコンパイルが完了した後、私たちの拡張保存位置
/usr/lib64/php/modules
です.この位置にあるはずです.二つ目はmake test
コマンドを実行させてください.3.0この時に問題がなければ、私達はこの時にextension=amqp.soを追加します.
3.1配置ファイルの位置を検索します.普通は
/etc/php.d
の中にあります.touch amqp.ini
を作成してextension=amqp.so
を追加します.3.2 PHP-FPMを再起動し、inx
service php-fpm restart | service nginx restart
3.3 PHPの拡張機能を確認するphp -m
3.4プロファイルを表示するphp -ini | grep amqp
//
define('EXEHANGE_NAME','RMQ_EN');
//
define('ROUTE_KEY_NAME','RMQ_RKN');
//
define('QUEUE_NAME','RMQ_QN');
try {
$arr = [
'host' => '127.0.0.1',
'port' => 5672,
'user' => 'guest',
'password' => 'guest',
'vhost' => '/',
];
//
$con = new AMQPConnection($arr);
if(!$con->connect()) {
var_dump(' 1');
}
// -- --
$channel = new AMQPChannel($con);
// -- --
$exchange = new AMQPExchange($channel);
//
$exchange->setName(EXEHANGE_NAME);
$exchange->setType(AMQP_EX_TYPE_DIRECT);
// : , :
for ($i = 0; $i < 20; $i++) {
$message = date('Y-m-d H:i:s',time()).'--'.mt_rand(100,1000)*$i.'--- '.$i;
$exchange->publish($message,ROUTE_KEY_NAME);
}
} catch (Exception $e) {
var_dump(' ');
}
?>
//
define('EXEHANGE_NAME','RMQ_EN');
//
define('ROUTE_KEY_NAME','RMQ_RKN');
//
define('QUEUE_NAME','RMQ_QN');
try {
$arr = [
'host' => '127.0.0.1',
'port' => 5672,
'user' => 'guest',
'password' => 'guest',
'vhost' => '/',
];
// AMQPConnection
$con = new AMQPConnection($arr);
if(!$con->connect()) {
var_dump(' 1');
}
// -- --
$channel = new AMQPChannel($con);
// -- --
$exchange = new AMQPExchange($channel);
//
$exchange->setName(EXEHANGE_NAME);//
// -- [ , , ]
$exchange->setType(AMQP_EX_TYPE_DIRECT);
//
$exchange->setFlags(AMQP_DURABLE);
//
$exchange->declareExchange();
// ,
$queue = new AMQPQueue($channel);
//
$queue->setName(QUEUE_NAME);
//
$queue->setFlags(AMQP_DURABLE);
//
$queue->declareQueue();
// : :
$queue->bind(EXEHANGE_NAME,ROUTE_KEY_NAME);
// , ,
$queue->consume(function($event,$queue){
$body = $event->getBody();
var_dump($body);
$queue->ack($event->getDeliveryTag());
});
} catch (Exception $e) {
var_dump(' 2');
}
?>