1. ホーム
  2. Web プログラミング
  3. PHP プログラミング
  4. phpのヒント

PHP拡張のkafka導入事例詳細へ

2022-01-17 15:15:22

何かアウトプットがないと、しばらくすると忘れてしまうので、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をよりサポートしてください。