tp6使用Kafka进行发邮件Excel

thinkphp 使用php-rdkafka 【代码】thinkphp 使用php-rdkafka。 阅读详情

使用前需要先进行Kafka的配置和Java JDK的安装

参考文档

然后在框架中安装Excel

composer require phpmailer/phpmailer 

然后在配置文件中进行公共参数的设置

在这里插入图片描述

//邮件发送配置
    'email' => [
        'CharSet' => 'UTF-8',//编码格式为utf8
        'Host' => 'smtp.qq.com',//SMTP服务器 以QQ邮箱为例子
        'SMTPAuth' => true,//启用SMTP认证,是否使用身份验证
        'Username' => '1919814727@qq.com',//发送方的邮箱
        'Password' => 'izhbczgidupvcfci',//你的授权码
        'SMTPSecure' => 'ssl',// 设置安全验证方式为ssl
        'Port' => '465',//邮件发送端口
    ],

然后封装公共方法

在这里插入图片描述

if(!function_exists('sendEmail')) {
    /**
     * @param $toemails
     * 收件人邮箱
     * @throws \PHPMailer\PHPMailer\Exception
     */
    function sendMail($toemails)
    {
        $toemail = $toemails;//定义收件人的邮箱
        $mail = new PHPMailer\PHPMailer\PHPMailer();
        $mail->isSMTP();// 使用SMTP服务
        $mail->CharSet = \think\facade\Config::get('app.email.CharSet');// 编码格式为utf8,不设置编码的话,中文会出现乱码
        $mail->Host = \think\facade\Config::get('app.email.Host');// 发送方的SMTP服务器地址
        $mail->SMTPAuth = \think\facade\Config::get('app.email.SMTPAuth');// 是否使用身份验证
        $mail->Username = \think\facade\Config::get('app.email.Username');// 发送方的163邮箱用户名,就是你申请163的SMTP服务使用的163邮箱</span><span style="color:#333333;">
        $mail->Password = \think\facade\Config::get('app.email.Password');// 发送方的邮箱密码,注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码!</span><span style="color:#333333;">
        $mail->SMTPSecure = \think\facade\Config::get('app.email.SMTPSecure');// 使用ssl协议方式</span><span style="color:#333333;">
        $mail->Port = \think\facade\Config::get('app.email.Port');// 163邮箱的ssl协议方式端口号是465/994
        $mail->setFrom("1919814727@qq.com", "Mailer");// 设置发件人信息,如邮件格式说明中的发件人,这里会显示为Mailer(xxxx@163.com),Mailer是当做名字显示
        $mail->addAddress($toemail, 'YangShuBin');// 设置收件人信息,如邮件格式说明中的收件人,这里会显示为Liang(yyyy@163.com)
        $mail->addReplyTo("1919814727@qq.com", "WangXiaoQiang");// 设置回复人信息,指的是收件人收到邮件后,如果要回复,回复邮件将发送到的邮箱地址
        $mail->Subject = "这是一个测试邮件";// 邮件标题
        $mail->Body = "邮件内容是 <b>您的验证码是:123456</b>,哈哈哈!";// 邮件正文
        if (!$mail->send()) {// 发送邮件
            echo "Message could not be sent.";
            echo "Mailer Error: " . $mail->ErrorInfo;// 输出错误信息
        } else {
            echo '发送成功';
        }
    }
}

启动kafka

在这里插入图片描述
输入以下命令

bin/windows/zookeeper-server-start.bat config/zookeeper.properties

在这里插入图片描述

再打开一个命令框

bin/windows/kafka-server-start.bat config/server.properties

在这里插入图片描述

添加生产者

  //设置发送邮件的生产者producer
    public function sendEmail()
    {
        $rk = new \RdKafka\Producer();
        $rk->addBrokers("127.0.0.1:9092"); //kafka服务器地址
        // $rk->addBrokers("10.0.0.1,10.0.0.2");  //多服务器地址

        $topic = $rk->newTopic("wxq"); //topic名称
        $toemails = [
            'YSB'=>'1sfds015@qq.com',
            'TYS'=>'g.ysdfsan.s@qq.com',
            'TYS1'=>'30473ssdfsf29@qq.com',
            'YLY'=>'39sdff28sdfsdf7213@qq.com',
            'LGF'=>'84fsd9127@qq.com',
        ];
        foreach($toemails as $k=>$v) {
            $topic->produce(RD_KAFKA_PARTITION_UA, 0, $this->sendMails($v));
            $rk->poll(0);
            sleep(5);
        }
        while ($rk->getOutQLen() > 0) {
            $rk->poll(50);
        }
    }

        //掉哟弄个发送邮件方法
        public function sendMails($toemails)
        {
            //$toemails = '1710150890@qq.com';//定义收件人的邮箱
            sendMail($toemails);
        }
<?php

$conf = new \RdKafka\Conf();

$conf->set('group.id', 'myConsumerGroup');

$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("wxq", $topicConf);

// Start consuming partition 0
$topic->consumeStart(0, RD_KAFKA_OFFSET_STORED);

while (true) {
    $message = $topic->consume(0, 1 * 10000);
    switch ($message->err) {
        case RD_KAFKA_RESP_ERR_NO_ERROR:
            //没有错误打印信息
            var_dump($message);
            break;
        case RD_KAFKA_RESP_ERR__PARTITION_EOF:
            echo "等待接收信息\n";
            break;
        case RD_KAFKA_RESP_ERR__TIMED_OUT:
            echo "超时\n";
            break;
        default:
            throw new \Exception($message->errstr(), $message->err);
            break;
    }
}

在这里插入图片描述

创建消费者(这个放在原生php文件中就可以,需要使用cli运行模式来运行,否则出不来效果)

PHP 消息队列 Kafka 使用 安装 Kafka 服务 直接到 kafka 官网 , 下载最新的 wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz 解压,进入目录 tar -zxvf kafka_2.13-2.5.0.tgz cd kafka_2.13-2.5.0 启动 Kafka 服务 使用安装包中的脚本启动单节点 Zookeeper 实例 bin/zookeeper-server-start.sh -daemon confi 阅读详情

相关推荐

Tp5使用Kafka:封装生产者、消费者操作类

【相关文章】PHP操作Kafka:php-rdkafka扩展的安装 1、config.php中配置: //kafka连接配置 'kafka_server' => [ 'host' => '127.0.0.1:9092', 'topic' => 'topic1', ], 2、创建一个生产者 KafkaProducer.php : <?php namespace app\index\controller; class KafkaProducer { p

李维山的博客 2665

tp6中kafka使用

<?php namespace app\util; use \RdKafka\Conf; use \RdKafka\Producer; class Kafka{ public $kafkaConfig; public $kafkaResource; //初始化 public function __construct(){ $this->connect(); } /** * 连接 */ pri.

阅读之后,对你有帮助,那就点个赞再走吧 2800

Mike 21如何制作随水深变化的糙率文件

MIKE 21如何制作随水深变化的糙率文件

zhuzhujiayoua的博客 2249

如何更好地使用Kafka

要确保Kafka在使用过程中的稳定性,需要从kafka在业务中的使用周期进行依次保障。主要可以分为:事先预防(通过规范的使用、开发,预防问题产生)、运行时监控(保障集群稳定,出问题能及时发现)、故障时解决(有完整的应急预案)这三阶段。事先预防即通过规范的使用、开发,预防问题产生。主要包含集群/生产端/消费端的一些最佳实践、上线前测试以及一些针对紧急情况(如消息积压等)的临时开关功能。Kafka调优原则:1.确定优化目标,并且定量给出目标(Kafka 常见的优化目标是吞吐量、延时、持久性和可用性)。

qq_40322236的博客 529

使用buildroot系统的qmake编译QT出现Unknown module(s) in QT: xxxx 的错误解决方法

可以看到,我这里使用的是 qt5base-5.15.2 目录下的qmake,这个qmake只包含了基础的qt模块,而额外添加的qt模块没有包含进去,需要使用。可以看到我这里是有的,如果你跟我一样,模块存在,但是还是报找不到对应模块的错误的话,大概率是跟我一样,用错qmake了,看第二点。在包含 qt5base 目录下查看,是否有对应模块的目录,如果没有的话,需要通过make menuconfig 添加一下。目录下的qmake才可以。

T541132的博客 2489

Java开发者必看:Apache PDFBox实现PDF数字签名完整指南(附源码)

本文为Java开发者提供了使用Apache PDFBox实现PDF数字签名的完整指南。详细介绍了从环境配置、核心原理到完整代码实现的全过程,涵盖证书管理、签名位置计算、性能优化及实际应用案例,并附有可直接复用的源码,帮助开发者高效集成PDF数字签名功能。

o1p2q3r的博客 339

基于 PHP 的 Kafka 底层公共类的封装和调用

以TP5.0框架为例,在extend/创建RdKafkaClient.php。如何在 Thinkphp 5.0 下使用 kafka,5分钟上手!注:本文用到的是rdkafka公共类库,

潘广宇的博客 1049

基于本机知识库 + 豆包(火山引擎)+ MCP的落地方案

最小 MVP:本地知识库 + Doubao Embedding + 简单检索。工具化:把检索/写入/系统功能通过 MCP 封装。Agent 编排:RAG 流程 + 自检 + 引用输出。这样你就可以快速落地一个基于豆包 + 本机知识库的 MCP Agent。

lpfasd123的博客 1095

php框架中配置Kafka

由于Kafka是由Java编写的,所以我们需要先安装 java 的 jdk 大致运行原理1. producer 先从 zookeeper 的 “/brokers/…/state” 节点找到该 partition 的 leader 2. producer 将消息发送给该 leader 3. leader 将消息写⼊本地 log 4. followers 从 leader pull 消息,写⼊本地 log 后 leader 发送 ACK(确认字符) 5. leader 收到所有 ISR 中的 replica

jiamingchuan的博客 726

Transformer实战——Transformer自编码模型

自编码模型依赖于原始 Transformer 编码器,并且在解决分类问题时非常高效。除了 BERT 外,还有许多流行的自编码模型,在本节中,我们将一些除 BERT 外的自编码模型,这些模型的目标是通过优化预训练过程、增加层数或头数、改善数据质量、设计更好的目标函数等,来在下游任务上取得更好的表现。这些改进大致可以分为两个方面,更好的架构设计选择和预训练控制。

盼小辉丶的博客 9297

一个车载HUD的设计参考

一个车载HUD的设计参考

weixin_72050316的博客 796

Thinkphp6 安装Kafka扩展

phpinfo() 查询信息,本机为PHP7.4.3,NTS。

君子如玉的博客 630

2023年电工杯 | 2023年电工杯数学建模竞赛思路(A题、B题)

2023年电工杯 | 2023年电工杯数学建模竞赛思路(A题、B题)

前程算法屋的博客 5593

TP5.0网站如何完整的使用kafka来实现消息队列?

在 TP5 中使用 Kafka 作为消息队列可以显著提高系统的并发处理能力和异步处理能力。通过生产者发送消息到 Kafka 主题,消费者从主题中消费消息,可以实现异步任务处理、实时数据分析等多种应用场景。高吞吐量:支持大量的消息发布和订阅。持久性:消息会被持久化到磁盘,保证消息不丢失。可靠性:通过配置可以实现至少传递一次或恰好传递一次的消息传递语义。扩展性:通过分区和副本机制,可以实现水平扩展。通过上述示例代码,你可以开始在 TP5 中使用 Kafka 来构建高性能的消息队列系统。

长风破浪会有时的博客 1400

最佳RANSAC算法拟合矩形的实现(基于PCL库)

最佳RANSAC算法是一种常用的参数估计方法,用于从数据集中拟合出最佳的模型。在计算机视觉和图像处理领域,最佳RANSAC算法常用于拟合几何形状,如矩形。本文将详细介绍如何使用点云库(PCL)中的最佳RANSAC算法来拟合矩形,并提供相应的源代码。

JbPatch的博客 1540

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

kafka-php生产者客户端

PHP 操作 Kafka 需要安装 librdkafka 库和 kafka 的 PHP 扩展。 1.安装 librdkafka 库 2.安装 php-kafka 扩展 二、代码实现 生产逻辑如下: 配置生产者客户端参数及创建相应的生产者实例 /** * Create a producer */ $conf = new RdKafka\Conf(); $conf->set('log_l...

yaoleic的博客 589

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

php+kafka 消息幂等处理重复消费

布隆过滤器+redis+数据库唯一索引处理。

肥茹的博客 438

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Thinkphp6 应用RdKafka插件封装工具类

Thinkphp6 应用RdKafka插件封装工具类

君子如玉的博客 554

php消息队列kafka最佳实践,某互联网大厂kafka最佳实践

前言:上手kafka已有2年的时间,我们的数据处理量也从最初的300g/day发展到今天的T量级在这个过程中也踩了不少坑,在这里分享出来和大家共勉。一、硬件考量1.1、内存不建议为kafka分配超过5g的heap,因为会消耗28-30g的文件系统缓存,而是考虑为kafka的读写预留充足的buffer。Buffer大小的快速计算方法是平均磁盘写入数量的30倍。推荐使用64GB及以上内存的服务器,低于...

weixin_36308543的博客 387

PHP rdKafka 安装和基本使用

安装,通过安装扩展即可,不需要额外新增源码 Installation (le-blanc.net) 生产者demo: <?php $conf = new RdKafka\Conf(); $conf->set('metadata.broker.list', 'localhost:9092'); $producer = new RdKafka\Producer($conf); $topic = $producer->newTopic("test"); for ($i = 0;

潘广宇的博客 1787

php kafka

Kafka 是一种高吞吐的分布式消息系统,能够替代传统的消息队列用于解耦合数据处理,缓存未处理消息等,同时具有更高的吞吐率,支持分区、多副本、冗余,因此被广泛用于大规模消息数据处理应用。 Kafka的特点: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息

u013713010的专栏 3248

tp5 发送邮件结合kafka消息队列

一、安装邮件操作类 composer require phpmailer/phpmailer 二、在config中配置相关信息 //邮件发送配置 'email' => [ 'Host' => 'smtp.qq.com',//SMTP服务器 以QQ邮箱为例子 'Port' => '465',//邮件发送端口 'SMTPAuth' => true,//启用SMTP认证 'SMTPSecure' =>

qq_54393165的博客 1118

php-kafka框架

php-kafka框架 项目简介 php-kafka框架,重点关注业务上游,避免重复造轮子 功能特性 低级消费与高级消费支持数据聚合批量回调,应对上游业务需要聚合数据的,典型的场景:消费到的kafka消息需要一次性聚合查询某个API,而不是消费到一条就查询一次API 支持进程自定义时间(毫秒级)来平滑结束进程,并且配合crontab来重新启动,达到平滑更新Php代码,典型的场景:业务大量的使用kafka消费进程,这时候改了某个业务底层代码忘了平滑重启进程,毕竟Php又不像go,常驻进程更新代码很容易遗忘!

qq517480195的博客 978

ThinkPHP与Kafka的结合

此篇文章主要记录thinkphp项目与kafka的结合使用前置条件:服务器必须有java环境-->部署Zookeeper-->部署Kafka-->创建Kafka主题-->修改php项目代码-->配置安全组规则9092端口1、Kafka已部署并且测试可以连接成功2、php 打开kafka扩展3、 安装依赖 composer require nmred/kafka-php示例:投票项目。

TheHao1222的博客 418

PHP操作Kafka

本文对php操作kafka的方法做一个记录,备忘。 一、搭建kafka集群 下载kafka并解压: tar -xzf kafka_2.13-2.7.0.tgz 搭建单机集群: cd kafka_2.13-2.7.0 #创建两个broker配置并修改端口 cp config/server.properties config/server-1.properties cp config/server.properties config/server-2.properties 编辑拷贝.

右手诗的博客 5665

PHP操作kafka,实现生产消费与进程监听

目录 一、PHP代码实现 kafka连接-设置初始参数 生产者生产消息 利用进程持续监听kafka,实时消费 二、逻辑思路 三、redis与kafka的区别 一、PHP代码实现 1. kafka连接-设置初始参数 <?php /** * Created by PhpStorm. * User: wuliZs_ */ /** * 业务Kafka单件 */ ...

wuliZs_的博客 4295
上一篇: 宝塔/本地 nginx负载均衡配置
下一篇: laravel8 layui多条件模糊搜索分页、批量删除
stringQiang
博客等级 码龄5年 36粉丝 36原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值