workerman怎么推送微信模板消息

crelaber

请问下我有如下需求
项目需求是这样,

管理员通过在页面前端创建课程,当课程创建成功之后要给平台所有的用户推送一条微信模板消息,原先我是直接通过 顺序执行发送微信模板消息,但是这种情况下由于nginx服务器超时机制,会导致很多的人收不到消息,所以必须更改策略,请问下使用workman怎么来实现给每个用户推送微信模板消息(需要与微信服务器进行交互)呢?

7122 3 0
3个回答

walkor

你把流程图画下吧

  • crelaber 2016-08-05

    管理员发布课程 ------>ajax提交数据

    后端处理
    1、添加课程数据到数据库
    2、查询该课程对应的机构下所有的关注者列表
    3、循环遍历关注着获取用户的openid
    4、通过openid调用封装好的发送微信模板方法发送消息通知(这里是顺序进行,因为初期没有考虑到用户量以及线程堵塞的问题)

    后端伪代码如下
    $this->model('course')->add_course($course_data);
    $organ_id = $_post['organ_id']; //机构id
    $follow_list = $this->model('organ')->get_follow_list($organ_id);

    foreach($follow_list as $key => $val){

    $this->model('weixin')->send_tpl_msg($val['openid']);

    }

crelaber

管理员发布课程 ------>ajax提交数据

后端处理
1、添加课程数据到数据库
2、查询该课程对应的机构下所有的关注者列表
3、循环遍历关注着获取用户的openid
4、通过openid调用封装好的发送微信模板方法发送消息通知b

后端伪代码如下

$this->model('course')->add_course($course_data);
$organ_id = $_post;  //机构id
$follow_list = $this->model('organ')->get_follow_list($organ_id);

foreach($follow_list as $key => $val){

     $this->model('weixin')->send_tpl_msg($val);

}
  • 暂无评论
walkor

你可以用http://www.workerman.net/workerman-jsonrpc,它可以异步并行处理业务。

1、Applications/JsonRpc/Services 下新建Weixin.php

<?php
class Weixin
{
    public static function sendTplMsg($openid)
    {
        // 通过openid调用封装好的发送微信模板方法发送消息通知
        send_tpl_msg($openid)
    }
}

2、启动服务端
调试方式终端命令行运行,此方式运行可以调试服务端错误
php start.php start

正式环境终端命令行运行,守护进程方式运行
php start.php start -d

3、网页调用的时候像这样

include_once 'yourClientDir/RpcClient.php';
// 服务端列表
$address_array = array('tcp://127.0.0.1:2015');
RpcClient::config($address_array);
$weixin = RpcClient::instance('Weixin');
foreach($follow_list as $key => $val){
    $weixin->asend_sendTplMsg($val);
}

4、workerman-jsonrpc只支持Linux系统,win系统就不要想了。

年代过于久远,无法发表回答
🔝