返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >Thinkphp5+FastAdmin配置workerman消息推送(多线程)
  • 529
分享到

Thinkphp5+FastAdmin配置workerman消息推送(多线程)

php开发语言 2023-09-05 06:09:20 529人浏览 八月长安
摘要

环境:linux系统、fastadmin(tp5内核)、PHP7.4.3,workerman1.0 首先删除vordor文件夹 安装扩展,下载workerman //安装扩展yum install php-process//下载worker

环境:linux系统、fastadmin(tp5内核)、PHP7.4.3,workerman1.0

首先删除vordor文件夹

安装扩展,下载workerman

//安装扩展yum install php-process//下载workermancomposer require topthink/think-worker

在application创建server.php

代码:

框架引导文件 require __DIR__ . '/../thinkphp/start.php';

在application目录创建push目录

application/push/controller/Worker.php

注:如果想监听多个端口,只需要在application/push/controller中再创建一个文件,把端口改一下即可,另外在application创建再创建一个server.php

代码:

send("ping");        $connection->lastMessageTime=time();    }               public function onWorkerStart($worker){    //查看是否有新的充值或提现订单,有就推送给所有用户        Timer::add(3, function()use($worker){             $time_now=time();            $hasNewDepositOrder   =   Db::name('worker')->where('is_push',0)->order('id desc')->count('id');            // $system_listener    =   Db::name('worker')->cache(true)->order('id desc')->select();             if($hasNewDepositOrder){                $depositOrderInfo   =   Db::name('worker')->where('is_push',0)->order('id desc')->find();                $data   =   ['creatTime'=>date('Y-m-d H:i:s'),'name'=>$depositOrderInfo['name'],'tel'=>$depositOrderInfo['tel']];                foreach($worker->connections as $connection) {                    if(empty($connection->lastMessageTime)){                        $connection->lastMessageTime =   $time_now;                    }                     if($time_now-$connection->lastMessageTime > self::$heartbeat_time){                    $connection->close();                    }                     $connection->send(json_encode($data));                }               Db::name('worker')->where('id',$depositOrderInfo['id'])->update(['is_push'=>1]);            }else{                foreach($worker->connections as $connection) {                    if(empty($connection->lastMessageTime)){                        $connection->lastMessageTime = $time_now;                        continue;                    }                     if($time_now-$connection->lastMessageTime > self::$heartbeat_time){      //连接超时                $connection->close();                    }                }            }        });      } }

找到/vendor/topthink/think-worker/src里面的Server.php

使用命令进入到application目录中,执行命令:php server.php start

注:如果想要监听多个端口:需要找到$this->worker = new Worker();

改成$this->worker = new Worker($this->Socket);

整体代码如下:

Http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st // +----------------------------------------------------------------------namespace think\worker;use Workerman\Worker;abstract class Server{    protected $worker;    protected $socket    = '';    protected $protocol  = 'http';    protected $host      = '0.0.0.0';    protected $port      = '2346';    protected $processes = 4;        public function __construct()    {        // 实例化 Websocket 服务               $this->worker = new Worker($this->socket);//this->socket        // 设置进程数        $this->worker->count = $this->processes;        // 初始化        $this->init();        // 设置回调        foreach (['onWorkerStart', 'onConnect', 'onMessage', 'onClose', 'onError', 'onBufferFull', 'onBufferDrain', 'onWorkerStop', 'onWorkerReload'] as $event) {            if (method_exists($this, $event)) {                $this->worker->$event = [$this, $event];            }        }        // Run worker        Worker::runAll();    }    protected function init()    {    }}

来源地址:https://blog.csdn.net/nh2r1114/article/details/129829167

--结束END--

本文标题: Thinkphp5+FastAdmin配置workerman消息推送(多线程)

本文链接: https://lsjlt.com/news/394775.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Thinkphp5+FastAdmin配置workerman消息推送(多线程)
    环境:linux系统、fastadmin(tp5内核)、php7.4.3,workerman1.0 首先删除vordor文件夹 安装扩展,下载workerman //安装扩展yum install php-process//下载worker...
    99+
    2023-09-05
    php 开发语言
  • 详解php微信小程序消息推送配置
    第一步 官网下载对应版本的cryptoDemo 下载地址:https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip 第二步 创建检...
    99+
    2024-04-02
  • 怎么在微信小程序中配置消息推送
    这篇文章将为大家详细讲解有关怎么在微信小程序中配置消息推送,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。第一步官网下载对应版本的cryptoDemo第二步创建检查文件wxcheck.php这...
    99+
    2023-06-14
  • uniapp小程序订阅消息推送+Thinkphp5后端代码教程示例
    记录一下通过uniapp开发小程序消息推送的实例,配合后端tp推送,之前写的项目是微信小程序而且后端是原生php,这次通过项目记录一下 目录 回顾access_token获取规则以及思路 第一步:设计前端触发订阅事件第二步:设...
    99+
    2023-08-16
    uni-app 小程序 数学建模 Thinkphp
  • 微信小程序有多少种推送消息方式
    这篇文章主要介绍微信小程序有多少种推送消息方式,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信小程序有5种推送消息的方式,分别为:1、小票机订单提醒,实现对商家的消息提醒;2、短信提醒;3、模板消息,各种动态可及时...
    99+
    2023-06-27
  • 微信公众号配置 Token 认证以及消息推送功能
    前言公众号服务配置 Token认证如何配置Token 认证接口 公众号获取网页授权及用户信息导向网页授权关注后消息触发授权 公众号推送模板消息模板消息功能插件推送模版消息接口介绍获...
    99+
    2023-10-04
    微信 java servlet
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作