php中白(比小白强一点儿) 利用 swoole+easywechat 实现微信模板消息群发/消息推送

利用swoole + easywechat实现微信公众号模板消息群发

之前做项目 有一个需求是给关注公众号的人群发模板消息,(⊙o⊙)…思考了一下决定用swoole实现模板消息群发 主要实现是在httpserver的request回调中接受后台要发送的消息内容 之后利用swoole_process模块fork出n个进程 在进程中 for循环开启多个协程 进行操作
环境的话就装个宝塔在装个swoole扩展就行
写的不好的话请多多包涵,指教 谢了~

那么 写好之后长这样儿 里面的db_class 还有waitGroup 没用上 不用管它
在这里插入图片描述
先来一个简单的composer.json 在里面设置了一个src目录
在这里插入图片描述
整一个目录 用来存放一些 配置信息 工具类 巴拉巴拉巴拉~
src中最主要的是App下的Start.php主要作用是返回container容器 容器中已经加载swoole 公众号 配置文件 注入easywechat对象 还有工具类
在这里插入图片描述
在这里插入图片描述
之后就开始写swoole的部分了
在这里插入图片描述
我这里用的的httpserver呢 主要是懒了 http访问起来比较简单 嘎嘎 不需要担心在后台发送数据请求的时候会阻塞 可以用php里面的 fsockopen来发送请求 他是异步的

下面就是在onrequest中接收数据了 这里说一下 数据分发的方法 比如需要发送100条数据 我设置一个进程负责发送20条数据 那么就fork出5个进程 如果需要发送110条数据的话 就会fork出6个进程 array_chunk就是做这个事儿的,之前想过 不传递数组直接传递数组下标 这个怎么是先没有想出来 憋哪儿了 但是即使传递数组的话 我也用了一下 引用传递…没报错 就当他好使了
在这里插入图片描述
比如我需要发送6调数据 一个进程负责发送2条数据 这里面的$new_array则是这个格式的
0=>[‘数据1’,‘数据2’],
1=>[‘数据3’,‘数据4’],
2=>[‘数据5’,‘数据6’]
直接将他发送给fork方法 则fork方法就会 fork出三个进程 分别来取出 这个new_array中的key
在这里插入图片描述
在这里插入图片描述
那么 到这里就结束了

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是使用PHP Swoole实现多进程发送微信模板消息的代码示例: ```php <?php // 引入swoole库 use Swoole\Process; // 模板消息内容 $template_data = array( 'touser' => 'openid', 'template_id' => 'template_id', 'data' => array( 'keyword1' => array( 'value' => 'value1', 'color' => '#173177' ), 'keyword2' => array( 'value' => 'value2', 'color' => '#173177' ), //... ) ); // 创建进程 $worker_num = 4; // 进程数量 $workers = array(); // 进程数组 for($i = 0; $i < $worker_num; $i++) { $process = new Process(function(Process $worker) use ($template_data) { // 引入微信SDK库 require_once 'path/to/wechat-sdk/autoload.php'; // 初始化微信公众号配置 $options = array( 'token' => 'your_token', 'appid' => 'your_appid', 'appsecret' => 'your_appsecret' ); // 实例化微信公众号对象 $wechat = new WeChat($options); // 发送模板消息 $wechat->sendTemplateMessage($template_data); }, false, false); $process->name('worker_'.$i); // 设置进程名 $process->start(); // 启动进程 $workers[] = $process; // 添加进程到数组 } // 等待子进程结束 foreach($workers as $worker) { $worker->wait(); } ``` 以上示例中,我们使用了Swoole库的Process类来创建多个进程,每个进程中实例化微信公众号对象并发送模板消息。通过这种方式,可以提高模板消息发送效率,同时避免单个进程发送过程中出现阻塞导致其他请求的延迟。 需要注意的是,在使用Swoole的多进程功能时,需要特别关注进程间的通信和数据共享问题。在本示例中,我们没有涉及到这些问题,因为每个进程内部都是独立的。如果需要进行数据共享,可以考虑使用Swoole提供的相关组件,例如Table、Atomic等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值