最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用擴(kuò)展的方式在PHP中使用Kafka的教程分享

 更新時間:2023年05月26日 09:24:23   作者:北橋蘇  
這篇文章主要為大家詳細(xì)介紹了如何利用擴(kuò)展的方式實現(xiàn)在PHP中使用Kafka,具體包括擴(kuò)展安裝和這種方式的基本操作,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

前言

由于之前在 PHP 中使用 Kafka 是通過 composer 包的方式,由于 nmred/kafka-php 很久沒有維護(hù),并且網(wǎng)上相關(guān)問題的文章也比較少。所以我這次換成 PHP 擴(kuò)展 RdKafka 繼續(xù)使用,主要介紹擴(kuò)展安裝和這種方式的基本操作。

安裝

1. 下載

地址(找到與自己環(huán)境匹配的就可以)

2. 目錄

由于 php-rdkafka 依賴 librdkafka,linux 就需要先安裝 librdkafka 后安裝 php-rdkafka,而 windows 版本是如下幾個文件,安裝方法如下:

(1). 將 librdkafka.dll 和 librdkafka.pdb 放入 PHP 安裝的根目錄下,而 php_rdkafka.dll 和 php_rdkafka.pdb 放入 PHP 安裝目錄的 ext 下。

(2). php.ini 配置文件添加 extension=php_rdkafka.dll,最后重啟 PHP。

(3). php-m 或這 phpinfo (); 就可以查看到擴(kuò)展了。

通過 get_declared_classes() 也可以查看到擴(kuò)展里預(yù)設(shè)的函數(shù)了。

使用

1. 生產(chǎn)

public function kafkaTest()
{
	$rk = new \RdKafka\Producer();
	$rk->addBrokers("127.0.0.1:9092");
	$topic = $rk->newTopic("shop");
	$ret = [];
	for ($i = 0; $i < 5; $i++) {
		$content = "第" . $i . "次發(fā)送失敗";
		$message = ["mobile" => "15623652142", "content" => $content];
		$payload = json_encode($message);
		// 指定向0號partition生產(chǎn)數(shù)據(jù)
		$ret[]['produce_res'] = $topic->produce(0, 0, $payload, "sms_$i");
		// 隨機(jī)選擇partition
		//$topic->produce(RD_KAFKA_PARTITION_UA, 0, $payload);
		if ($rk->getOutQLen() > 0) {
			$ret[]['produce_poll'] = $rk->poll(500);
		} else {
			$ret[]['produce_poll'] = $rk->poll(0);
		}
	}
	dump($ret);
}

2. 消費(從指定的 partition 消費)

protected function execute(Input $input, Output $output)
{
	$output->writeln("!!!hello kafka!!!");
	$conf = new \RdKafka\Conf();
	$conf->set('group.id', 'sms-consumer-group');
	$rk = new \RdKafka\Consumer($conf);
	$rk->addBrokers("127.0.0.1:9092");
	$topicConf = new \RdKafka\TopicConf();
	$topicConf->set('auto.commit.interval.ms', 100);
	$topicConf->set('offset.store.method', 'file');
	$topicConf->set('offset.store.path', sys_get_temp_dir());
	$topicConf->set('auto.offset.reset', 'smallest');
	$topic = $rk->newTopic("shop", $topicConf);
	$topic->consumeStart(0, RD_KAFKA_OFFSET_STORED);
	while(true) {
		// 設(shè)置消費時的時間間隔,單位毫秒,以下表示5秒消費一個
		$message = $topic->consume(0, 5000);
		if ($message) {
			echo "讀取到消息\n\r";
			// 消息對象,包括消息主題,消息創(chuàng)建時間戳,消息分區(qū)編號,消息主體,消息鍵名,消息長度等
			var_dump($message);
			switch ($message->err) {
				case RD_KAFKA_RESP_ERR_NO_ERROR:
					echo "讀取消息成功:\n\r";
					var_dump($message->payload);
					break;
				case RD_KAFKA_RESP_ERR__PARTITION_EOF:
					echo "讀取消息失敗\n\r";
					break;
				case RD_KAFKA_RESP_ERR__TIMED_OUT:
					echo "請求超時\n\r";
					break;
				default:
					throw new \Exception($message->errstr(), $message->err);
					break;
			}
		} else {
			echo "未讀取到消息\n\r";
		}
	}
	$output->writeln("!!!the end!!!");
}

其他

在執(zhí)行消費過程中,發(fā)現(xiàn) kafka 停止服務(wù),拋出的異常:ERROR Shutdown broker because all log dirs in /tmp/kafka-logs have failed。

解決方法

刪除 kafka-logs 下的所有日志,再重新啟動 Kafaka, kafka-server-start.bat ....\config\server.properties &

到此這篇關(guān)于利用擴(kuò)展的方式在PHP中使用Kafka的教程分享的文章就介紹到這了,更多相關(guān)PHP使用Kafka內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PHP7下協(xié)程的實現(xiàn)方法詳解

    PHP7下協(xié)程的實現(xiàn)方法詳解

    最近在學(xué)習(xí)中遇到了協(xié)程,發(fā)現(xiàn)這類文章介紹的較少,所以下面這篇文章主要給大家介紹了關(guān)于PHP7下協(xié)程的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • php 數(shù)組的一個悲劇?

    php 數(shù)組的一個悲劇?

    今天由于某篇代碼需要修改。沒經(jīng)過測試就上線了,作為多年代碼工。出現(xiàn)這種bug太可恥
    2011-05-05
  • php實現(xiàn)Mysql簡易操作類

    php實現(xiàn)Mysql簡易操作類

    這個PHP實現(xiàn)的mysql的操作類完整版已經(jīng)使用過了,而這個簡化版是經(jīng)過修改完整版后的簡化版,適用在一般的 PHP 應(yīng)用中,功能上可以實現(xiàn)基本的增刪改查的操作,以及打印 MYSQL 錯誤,自我感覺不錯,如果網(wǎng)站應(yīng)用不是很強(qiáng)大,應(yīng)用這個 MYSQL 的操作類已經(jīng)足夠了,
    2015-10-10
  • PHP類的封裝與繼承詳解

    PHP類的封裝與繼承詳解

    類是面向?qū)ο笾械闹匾拍?,而封裝和繼承是面向?qū)ο蟮闹匾攸c。這篇文章我們就重點討論一下封裝、繼承這兩個特點,給出一些列子,供大家學(xué)習(xí)參考。
    2015-09-09
  • PHP共享內(nèi)存使用與信號控制實例分析

    PHP共享內(nèi)存使用與信號控制實例分析

    這篇文章主要介紹了PHP共享內(nèi)存使用與信號控制,結(jié)合實例形式分析了php基于shmop擴(kuò)展實現(xiàn)共享內(nèi)存的進(jìn)程間通信以及信號控制等相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • php數(shù)組函數(shù)序列之a(chǎn)rray_search()- 按元素值返回鍵名

    php數(shù)組函數(shù)序列之a(chǎn)rray_search()- 按元素值返回鍵名

    array_search() 函數(shù)與 in_array() 一樣,在數(shù)組中查找一個鍵值。如果找到了該值,匹配元素的鍵名會被返回。如果沒找到,則返回 false
    2011-11-11
  • 根據(jù)中文裁減字符串函數(shù)的php代碼

    根據(jù)中文裁減字符串函數(shù)的php代碼

    裁減字符串函數(shù)有很多,但是根據(jù)中文裁減字符串的卻很少,在本文將為大家介紹下使用php是如何實現(xiàn)的,感興趣的朋友不要錯過
    2013-12-12
  • 一些PHP寫的小東西

    一些PHP寫的小東西

    一些PHP寫的小東西...
    2006-12-12
  • 4種PHP異步執(zhí)行的常用方式

    4種PHP異步執(zhí)行的常用方式

    這篇文章主要介紹了4種PHP異步執(zhí)行的常用方式,幫助大家更好地分析php異步調(diào)用方法,熟練掌握,感興趣的小伙伴們可以參考一下
    2015-12-12
  • php設(shè)計模式 Interpreter(解釋器模式)

    php設(shè)計模式 Interpreter(解釋器模式)

    php設(shè)計模式 Interpreter(解釋器模式),需要的朋友可以參考下。
    2011-06-06

最新評論

徐州市| 浏阳市| 潼关县| 南和县| 堆龙德庆县| 黑河市| 卓尼县| 东乌| 弋阳县| 扬州市| 五峰| 玛多县| 安顺市| 瓦房店市| 尉犁县| 合山市| 商河县| 永丰县| 梅州市| 神木县| 依兰县| 安国市| 阳高县| 乳源| 林周县| 云林县| 交口县| 张北县| 安图县| 策勒县| 通辽市| 阳东县| 进贤县| 德州市| 即墨市| 中阳县| 志丹县| 武川县| 安丘市| 武胜县| 潞城市|