PHP拡張のkafka導入事例詳細へ
何かアウトプットがないと、しばらくすると忘れてしまうので、Kafkaのインストール作業とphp拡張の試用記録を紹介します。
このような場合、PHPアプリケーションでPHP拡張機能を使用する必要があります。次に、Kafkaのインストールについて話を始めます。ここでは例としてCentOS 6.4、64bitを使用します。
I. 最初にjdkがインストールされていることを確認する
コマンドを使用します。
[root@localhost ~]# java -version
java version "1.8.0_73"
Java(TM) SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)
上記の情報があれば、それを下にインストールします。中には正しいjdkでない場合もあるので、正しいjdkにインストールすること。インストールされていない場合は、以下の jdk インストール方法を参照してください。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
このアドレスにアクセスして jdk8 バージョンをダウンロードします。私は jdk-8u73-linux-x64.tar.gz をダウンロードして /usr/local/jdk/ の下に解凍しています。
次に、/etc/profile ファイルを開いてください。
[root@localhost ~]# vim /etc
次のコードをファイルに書き込んでください。
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_73
export CLASSPATH=. :$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
最後に
[root@localhost ~]# source /etc
この時点でjdkが有効になっており、java -versionで確認することができます。
II. 次に、Kafkaをインストールします。
1. Kafkaのダウンロード
をhttp://kafka.apache.org/downloads.html下载相应的版本、使っています。 kafka_2.9.1-0.8.2.2.tgz .
2. ダウンロード後、お好きなディレクトリに解凍してください
私は /usr/local/kafka/kafka_2.9.1-0.8.2.2 に解凍しました。
3. デフォルトのKafkaを実行する
Zookeeperサーバを起動します。
[root@localhost kafka_2.9.1-0.8.2.2]# sh bin/zookeeper-server-start.sh config/zookeeper.properties &
Kafkaサーバーを起動する
[root@localhost kafka_2.9.1-0.8.2.2]# sh bin/kafka-server-start.sh config/server.properties &
プロデューサーを実行する プロデューサー
[root@localhost kafka_2.9.1-0.8.2.2]# sh bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
コンシューマーコンシューマーを実行する
[root@localhost kafka_2.9.1-0.8.2.2]# sh bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
こうすることで、制作者側で入力されたコンテンツが、すぐに消費者に拾われるのです。
4. 生産者と消費者の間にクロスマシンの接続がある場合
config/server.properties に host.name を設定しないと、クロスマシン接続ができません。
III. Kafka-PHPの拡張機能
1ラウンド使用後、https://github.com/nmred/kafka-php可以用。
composerを使ってインストールしたので、その例を紹介します。
プロデューサー.php
<?php
require 'vendor/autoload.php';
while (1) {
$part = mt_rand(0, 1);
$produce = \Kafka\Produce::getInstance('kafka0:2181', 3000);
// get available partitions
$partitions = $produce->getAvailablePartitions('topic_name');
var_dump($partitions);
// send message
$produce->setRequireAck(-1);
$produce->setMessages('topic_name', 0, array(date('Y-m-d H:i:s'));
sleep(3);
}
コンシューマ.php
require 'vendor/autoload.php';
$consumer = \Kafka\Consumer::getInstance('kafka0:2181');
$group = 'topic_name';
$consumer->setGroup($group);
$consumer->setFromOffset(true);
$consumer->setTopic('topic_name', 0);
$consumer->setMaxBytes(102400);
$result = $consumer->fetch();
print_r($result);
foreach ($result as $topicName => $partition) {
foreach ($partition as $partId => $messageSet) {
var_dump($partition-> getHighOffset());
foreach ($messageSet as $message) {
var_dump((string)$message);
}
var_dump($partition-> getMessageOffset());
}
}
この記事では、カフカ設置アプリケーションのPHP拡張機能について紹介します。カフカ設置アプリケーションのPHP拡張機能について、より関連する内容は、BinaryDevelopの過去の記事を検索するか、以下の関連記事を引き続き閲覧してくださいBinaryDevelopをよりサポートしてください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン