http://blog.csdn.net/fenglailea/article/details/52458737#t3
風來了.fox
安裝zookeeper
推薦1.1 直接復制
1.1.直接安裝zookeeper(無須編譯)
下載地址:http://mirror.bit.edu.cn/apache/zookeeper/
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
tar -zxvf zookeeper-3.4.9.tar.gz
mv zookeeper-3.4.9/ /usr/local/zookeeper/
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
設置全局變量
vim ~/.bash_profile
- 1
- 1
最后一行加入
export PATH=/usr/local/zookeeper/bin:$PATH
- 1
- 1
使之生效
source ~/.bash_profile
- 1
- 1
配置文件位置
/usr/local/zookeeper/conf/zoo.cfg
- 1
- 1
注意:默認配置文件並沒有,直有一個案例文件 zoo_sample.cfg
使用的時候要 自行復制一個
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
- 1
- 1
1.2.源碼編譯安裝zookeeper
下載地址:http://mirror.bit.edu.cn/apache/zookeeper/
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
tar -zxf zookeeper-3.4.9.tar.gz
cd zookeeper-3.4.9/src/c
./configure -prefix=/usr/local/zookeeper/zookeeper-3.4.9/
make && make install
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
設置全局變量
vim ~/.bash_profile
- 1
- 1
最后一行加入
export PATH=/usr/local/zookeeper/zookeeper-3.4.9/bin:$PATH
- 1
- 1
使之生效
source ~/.bash_profile
- 1
- 1
配置文件位置
/usr/local/zookeeper/zookeeper-3.4.9/conf/zoo.cfg
- 1
- 1
注意:默認配置文件並沒有,直有一個案例文件 zoo_sample.cfg
使用的時候要 自行復制一個
cp /usr/local/zookeeper/zookeeper-3.4.9/conf/zoo_sample.cfg /usr/local/zookeeper/zookeeper-3.4.9/conf/zoo.cfg
- 1
- 1
2.安裝php zookeeper擴展
wget http://pecl.php.net/get/zookeeper-0.2.2.tgz
tar -zxvf zookeeper-0.2.2.tgz
cd zookeeper-0.2.2
phpize
./configure -with-php-config=/www/lanmps/php5.6.23/bin/php-config -with-libzookeeper-dir=/usr/local/zookeeper/zookeeper-3.4.9/
make && make install
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
注意:phpize 為你的PHP版本目錄的 phpize
注意最新版kafka請使用7(3和4PASS)
3.安裝librdkafka
wget https://github.com/edenhill/librdkafka/archive/master.zip
mv master.zip librdkafka-master.zip
unzip librdkafka-master.zip
cd librdkafka-master
./configure
make
make install
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
4.安裝php-kafka擴展
wget https://github.com/EVODelavega/phpkafka/archive/master.zip
mv master.zip phpkafka-master.zip
unzip phpkafka-master.zip
cd phpkafka-master
phpize
./configure --enable-kafka --with-php-config=/www/lanmps/php5.6.23/bin/php-config
make #編譯
make install #安裝
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
注意:phpize 為你的PHP版本目錄的 phpize
5.配置擴展
編輯PHP配置文件
vim php.ini
- 1
- 1
末尾增加
extension=zookeeper.so
extension=kafka.so
- 1
- 2
- 1
- 2
注意:先查找 extension_dir 是否已經配置過,如果沒有配置,請自行配置。
每個擴展編譯安裝成功后都會輸出(類似如下)
Installing shared extensions: /安裝目錄/php5.6.23/lib/php/extensions/no-debug-non-zts-20131226/
- 1
- 1
只要把地址復制,改成如下格式,加入到php.ini里
extension_dir=/安裝目錄/php5.6.23/lib/php/extensions/no-debug-non-zts-20131226/
- 1
- 1
6.查看是否安裝完成
在
phpinfo();
里面查看
是否有 kafka,zookeeper 擴展,如果有表示安裝成功
7.PHP-kafka擴展(3和4安裝完成后無法使用時)
https://github.com/nmred/kafka-php
使用此擴展,支持最新版kafka
這里使用composer安裝的,以下是示例(example文件夾下):
producer.php
<?php
require 'vendor/autoload.php';
$part = mt_rand(0, 1);
$produce = \Kafka\Produce::getInstance('localhost: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'));
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
consumer.php
require 'vendor/autoload.php';
$consumer = \Kafka\Consumer::getInstance('localhost: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());
}
}