Centos版本:Centos6.4,PHP版本:PHP7。

在上一篇文章中使用IP为192.168.9.154的机器安装并开启了Kafka进行了简单测试,充当了Kafka服务器。

本篇文章新开启一台IP为192.16.9.157的机器给PHP开启扩展。

找到github的扩展下载地址,这里是php-rdkafka,虽然php有一个扩展是php-kafka,但是php-rdkafka要比php-kafka强大。

https://github.com/arnaud-lb/php-rdkafka  //php-rdkafka下载地址

  在安装php-rdkafka之前需要给系统安装一个库,librdkafka。

https://github.com/edenhill/librdkafka  //librdkafka地址

  两个包都下载完之后,首先进行librdkafka的解压安装

# unzip librdkafka-master.zip
# cd librdkafka-master
# ./configure
# make && make install

  接下来编译安装php-rdkafka

unzip php-rdkafka-master.zip
# cd php-rdkafka-master
# phpize
# ./configure --with-php-config=/usr/local/php/bin/php-config
# make && make install

  

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/  //so地址
# vim /usr/local/php/etc/php.ini //添加下面代码
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/rdkafka.so
# service php-fpm restart //重启PHP

  

#查看扩展是否生效
php -m | grep kafka

OK

hp操作kafka

运行前先开启我们的zookeeper和kafka 上篇文章有如何开启

    1. 运行producer
      kafka默认端口9092

      vim producer.php

 <?php
$rk = new RdKafka\Producer();
$rk->setLogLevel(LOG_DEBUG);
$rk->addBrokers("ip:9092");
$topic = $rk->newTopic("test");
$topic->produce(RD_KAFKA_PARTITION_UA, 0, "要发送的消息");

  运行consumer
vim consumer.php

<?php
$rk = new RdKafka\Consumer();
$rk->setLogLevel(LOG_DEBUG);
$rk->addBrokers("ip");
$topic = $rk->newTopic("test");
$topic->consumeStart(0, RD_KAFKA_OFFSET_BEGINNING);
while(true){
sleep(1);
$msg = $topic->consume(0, 1000);
if ($msg) {
echo $msg->payload, "\n";
}
}

 开启两个窗口一个运行consumer 一个运行producer

php consumer.php
php producer.php

会发现我们已经简单的会使用kafka了。

最新文章

  1. wp8 入门到精通 仿美拍评论黑白列表思路
  2. Ret2Libc 练习(1) -- ZwSetInformationProcess
  3. Spark学习笔记之SparkRDD
  4. 随便聊聊 SOA &amp; SOAP &amp; WebService 的一些东西,以及客户端开发的代码逻辑解析
  5. 使用LotusScript操作Lotus Notes RTF域
  6. smartjs 0.2 OOP讲解 - factory
  7. 转载:第五弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!
  8. SharePoint Iframe 报错“此内容不能显示在一个框架中”
  9. google-perftools 分析JAVA 堆外内存
  10. NodeJS从零开始——NPM的使用
  11. libnet发包例子(tcp udp arp广播)
  12. HDOJ 3466 Proud Merchants
  13. #include&quot;*.c&quot; 文件问题
  14. HIT Winter Day ACM入门
  15. js数组总结
  16. JavaScript的简单继承实现案例
  17. ES 12 - 配置使用Elasticsearch的动态映射 (dynamic mapping)
  18. angular ViewChild ContentChild 系列的查询参数
  19. Android为TV端助力 Service 两种启动方式的区别
  20. javascript获取值

热门文章

  1. LR11录制手机/pad App脚本多种方法介绍(Mobile App补丁包)
  2. HashMap底层实现及原理
  3. Node.js—学习
  4. 利用Git生成本机SSH Key并添加到GitHub中
  5. Pwnable-blackjack
  6. session:
  7. Python 可执行对象
  8. CF-1155 D.Beautiful Array
  9. Serializable接口的意义和用法
  10. MySQL如果频繁的修改一个表的数据,那么这么表会被锁死。造成假死现象。