首页 » SEO优化 » powereasy改成php技巧_EasySwoole搭建高效微信治理后台

powereasy改成php技巧_EasySwoole搭建高效微信治理后台

访客 2024-12-11 0

扫一扫用手机浏览

文章目录 [+]

下面让我们用几步来快速创建一个微信管理系统。

1、安装EasySwoole

powereasy改成php技巧_EasySwoole搭建高效微信治理后台

EasySwoole是一个特殊不错的项目,Swoole初学者直接的去阅读文档理解起来很困难,但是通过EasySwoole去学习去利用,然后加深对Swoole的认识,是快速理解协程技能的一个很不错的方法。
EasySwoole供应了很多传授教化视频,案例,这些对付初学者很有帮助。

powereasy改成php技巧_EasySwoole搭建高效微信治理后台
(图片来自网络侵删)

# 安装框架composer require easyswoole/easyswoolephp vendor/bin/easyswoole install# 启动框架php easyswoole start

2、安装微信SDK

EasySwoole有专门的微信SDK直接安装即可

# 安装Sdkcomposer require easyswoole/wechat#微信SDKdemo地址:https://github.com/RunsTp/EasySwooleWeChatDemo

3、注册微信服务

注册做事对付新手来说理解起来有些别扭。
实在对付EasySwoole的办法也很好理解,他是内存中的代码。
什么是内存中的代码呢?最火的Laravel程序代码是写在文件存储的,程序每次会实行程序中的代码,EasySwoole是将代码存储在内存中的,运行后代码会一贯在内存中贮存。
Laravel当修正文件中的代码时你的程序将自动按照新代码进行实行。
EasySwoole改变文件中的代码正在实行的程序不会进行改变,须要重新启动才能得到新的代码。
比拟按照的做事器大家也能直白的创造,Laravel的内存花费比较小,CPU跳动比较大。
EasySwoole则是CPU基本不怎么动,但是运行起来内存花费会相对大一些。

EasySwoole和Laravel的差异就犹如图中的色块

下面是EasySwooleEvent.php 中的做事注册:

#拿到配置环境的公众年夜众号列#注册做事时不能利用数据库连接#从数据库获取数据的,#这时数据库连接做事刚刚注册,并不能利用$weChatList = Config::getInstance()->getConf('GONG_ZHONG_HAO');if(count($weChatList)>0){ #对每一个"大众号进行做事注册 foreach ($weChatList as $key => $value) { $temp = WeChatManager::getInstance()->weChat($value['appId']); #WeChatManager 是一个工具管理器,是为了快速获取公众号号工具的。
//创建做事 $weChat = $temp->officialAccount()->server(); Logger::getInstance()->console('debug', false); #事宜监听 // 注册收到文本领宜 $weChat->onMessage() ->set(RequestConst::MSG_TYPE_TEXT, function (RequestMsg $requestMsg) { #TextMessageHandler 监控类 return TextMessageHandler::handle($requestMsg); }); //与常规不同,事宜类的则通过 onEvent 方法来进行注册处理机制,这里是一个用户关注事宜 $weChat->onEvent() ->onSubscribe(function (RequestMsg $requestMsg){ #EventMessageHandler 监控类 return EventMessageHandler::subscribe($requestMsg); }); //也可以注册默认 和自定义事宜处理 $weChat->onEvent() ->set(RequestConst::DEFAULT_ON_EVENT,function (RequestMsg $requestMsg){ #EventMessageHandler 监控类 return EventMessageHandler::handle($requestMsg); }); }}

4、新建微信管理控件

微信管理控件实在是指的 WeChatManager类。
当然如果你仅仅须要管理一个"大众年夜众号的话实在不用这个类的。
但是既然你是程序员,就不要低估自己的实力。
搞定多"大众年夜众号配置这个对你来说还是很大略的。

下面是类中的紧张代码:

class WeChatManager{ // 单例化 进程内共享 use Singleton; / @var array 存储全部WeChat工具 / private $weChatList = []; //实例自动注册 private function register(string $appId): WeChat { $weChatList = Config::getInstance()->getConf('GONG_ZHONG_HAO'); $configArray = false; foreach ($weChatList as $key => $value) { if($appId == $value['appId']){ $configArray = [ 'appId' => $value['appId'], 'appSecret' => $value['appSecret'], 'token' => $value['token'], 'AesKey' => $value['AesKey'], ]; } } if(!$configArray){ throw new RuntimeException('"大众年夜众号不存在.'); } $weChatConfig = new \EasySwoole\WeChat\Config(); $weChatConfig->setTempDir(Config::getInstance() ->getConf('TEMP_DIR')); $weChatConfig->officialAccount($configArray); $weChat = new WeChat($weChatConfig); $this->weChatList[$appId] = $weChat; return $weChat; } //实例获取 public function weChat(string $appId): WeChat { if (isset($this->weChatList[$appId])) { return $this->weChatList[$appId]; }else{ return $this->register($appId); } }}

5、创建微信交互接口

做事注册完,管理控件完成,只能说系统可以利用SDK处理微信了。
但是大家都知道,我们须要两个接口和微信进行通讯。

#创建路由$routeCollector->get('/token/{appId}', '/WeChat/Index/token');$routeCollector->post('/token/{appId}', '/WeChat/Index/message');

路由中有两个接口GET和POST。
一个是验证,一个是数据交互。

数据验证:

public function token(){ // 将微信发来的 params 参数创建为 AccessCheck Bean工具 $accessCheckBean = new AccessCheck($this->request()->getRequestParam()); $weChat = WeChatManager::getInstance() ->weChat($this->request()->getRequestParam('appId')); $verify = $weChat->officialAccount() ->server() ->accessCheck($accessCheckBean); // 如果验证为真(来自于微信服务器的要求) if ($verify) { // 按照微信约定 相应 Code 200 并在 Body 输出打算出的值 $this->response()->withStatus(Status::CODE_OK); $this->response()->write($accessCheckBean->getEchostr()); } // 结束此相应 $this->response()->end();}

数据交互:

// 此 API 紧张做事 微信"大众平台的 事宜public function message(){ // 将微信发来的 params 参数创建为 AccessCheck Bean工具 $accessCheckBean = new AccessCheck($this->request()->getRequestParam()); $weChat = WeChatManager::getInstance() ->weChat($this->request()->getRequestParam('appId')); / @var string 微信发送的Body体 $rawContent / $rawContent = $this->request() ->getBody(); // 将要求转发给名为 'default' WeChat接管 会返回 XML string 或者 null try { $XML = $weChat->officialAccount() ->server() ->parserRequest($rawContent); } catch (Throwable $throwable) { // 这里我建议开拓者 catch 住非常 无论如何给用户相应友好的提示 防止涌现公众年夜众号非常的问题 // TODO: 这里实现一个非常记录 和发送做事器非常关照给开拓者的代码 Logger::getInstance() ->log('DEBUG-F',Logger::LOG_LEVEL_INFO,'DEBUG'); } $this->response()->withStatus(Status::CODE_OK); $this->response()->write($XML ?? 'success'); }

6、业务逻辑处理类(监控类)

token函数用于验证微信第三方做事器真实性,紧张交互还在message函数中。
这时一个完全的微信三方管理循环已经搭建完成。
信息从微信服务器,通过要求到message函数中。
通过已经注册的做事,会交还给监控类。
大家只要去编辑监控类进行数据处理和回调就可以咯。

下面先添加关注事宜:EventMessageHandler::subscribe($requestMsg);

public static function subscribe(RequestMsg $requestMsg){ $openid = $requestMsg->getFromUserName(); Logger::getInstance()->console('---subscribe---', false); //关注 $reply = new Text(); $reply->setContent(self::$return); $user = WechatModel::create() ->where('openid',$openid) ->get(); if(!$user){ WechatModel::create()->data([ 'openid'=>$openid, 'keyword'=>uniqid(), 'update_time'=>time(), 'create_time'=>time() ], false)->save(); } return $reply;}

7、对接测试

将"大众年夜众号第三方入口改本钱身的做事器地址:https://127.23.132.89/token/{appId}然后关注一下看看自己的数据表吧

标签:

相关文章

解析apkphpgit技巧_Git事理入门解析

Git,这个词实在源自英国鄙谚,意思大约是 “混账”。Linux 为什么会以这样自嘲的名字来命名呢?这个中还有一段儿有趣的历史可以...

SEO优化 2024-12-13 阅读0 评论0